我有一個檔案 file_list.txt,其中包含要處理的檔案名稱清單。對於 file_list.txt 中存在的所有文件,我必須刪除尾隨空格和額外的換行符。我怎樣才能做到這一點。使用 while 迴圈會更好還是使用 for 迴圈更好?
答案1
如果是關於編輯的內容file_list.txt
,你會使用文字編輯工具,而不是 shell 循環, 喜歡:
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 /./' --