그래서 나는 가지고있다여러 개의 텍스트 파일을 다운로드했습니다.이 파일의 이름을 제목으로 바꾸고 싶습니다.이 파일에는 무엇이 포함되어 있나요?.
출력은 head sn-800.txt
다음과 같습니다
깁슨 리서치 코퍼레이션 https://www.GRC.com/ 시리즈: 이제 안전해요! 에피소드: #800 날짜: 2021년 1월 5일 제목: Sun Blizzard 호스트: Steve Gibson 및 Leo Laporte 출처: https://media.grc.com/sn/sn-800.mp3 아카이브: https://www.grc.com/securitynow.htm
간단히 sn-800.txt
말해서 ,sn-800 - SolarBlizzard.txt
335개 파일 에 도달할 mv
때까지 화면의 모든 내용을 표시합니다 .
#!/bin/bash
for iEpisode in {802..807};
do
echo -n "sn-$iEpisode - ";
grep "^TITLE:" sn-"$iEpisode".txt |
cut -d":" -f2 |
sed 's/\t//g' |
tr -d '\n';
echo ".txt";
done
하지만 끝 부분(위의 `tr)에서 개행 문자를 제거하는 방법을 알아낼 수 없는 것 같습니다. 다음과 같습니다.
.txt02 - Where the Plaintext Is
.txt03 - Comparative Smartphone Security
.txt04 - NAT Slipstreaming 2.0
.txt05 - SCADA Scandal
.txt06 - C.O.M.B.
sn-807 - Dependency Confusion.txt
어떤 이유로든 마지막 파일은 정확하지만 이전 파일의 어딘가에 여전히 개행 문자가 있습니까? ? ? ( -n
마지막 파일에 대해 작업을 수행 하면 echo
모든 파일 이름이 하나의 문자열로 연결됩니다.)
내가 뭘 잘못했나요? ? ?
답변1
이러한 파일에는 CR/LF 줄 끝이 있으므로 해당 파일도 제거해야 합니다 \r
.
...
tr -d '\r\n';
...
이것이 각 줄의 시작 부분에 나타나는 이유입니다. .txt
끝 부분에 출력되지만 커서가 줄의 시작 부분으로 돌아온 후에입니다.