処理するファイル名のリストを含むfile_list.txtファイルがあります。 file_list.txtのすべてのファイルに対して末尾のスペースと余分な改行を削除する必要があります。どうすればいいですか? whileループまたはforループを使用する方が良いですか?
答え1
編集に関するものであればfile_list.txt
、シェルループではなくテキスト編集ツールを使用します。、よい:
sed 's/[[:space:]]*$//; # remove trailing whitespace
/./!d; # remove empty lines' < file_list.txt > new_file_list.txt
またはその場で編集してください。
perl -nli.back -e 's/\s+$//;print if /./' file_list.txt
(.back
元のバックアップコピーが必要ない場合は削除してください。)
ファイルリストがあり、各ファイルに対して実際に編集コマンドを実行したい場合を除き、そのファイルの内容を編集したい場合でもfile_list.txt
繰り返しは理想的ではありません。
内容がfile_list.txt
入力形式と互換性がある場合、xargs
つまりファイル名が空白(改行を含む)で区切られ、二重引用符、一重引用符、またはバックスラッシュが空白と互いにエスケープできる場合(すべての文字を許可)、次のことができますあります。
xargs < file_list.txt perl -nli.back -e 's/\s+$//;print if /./' --