だから私は持っています複数のテキストファイルをダウンロードしました。このファイルの名前をタイトルに変更したいと思います。このファイルには何が含まれていますか?。
出力は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つの文字列に連結されます。)
私は何が間違っていましたか? ? ?
答え1
これらのファイルにはCR / LF行末があるため、それらのファイルも削除する必要があります\r
。
...
tr -d '\r\n';
...
これが各行の先頭に現れる理由です。.txt
最後に出力されますが、カーソルが行の先頭に戻った後です。