Korn shell 的 for 循环和 while 循环哪个更好

Korn shell 的 for 循环和 while 循环哪个更好

我有一个文件 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 /./' --

相关内容