如何在 /home/johnny 中的每个文件开头添加一个包含文本“Hello”的新行,后面跟着一个空白行?另外,我必须删除每行末尾的每个无用的空格或制表符(如果一行只包含空格或制表符,它们将被删除,但必须保留该行)。
答案1
尝试以下步骤(开始于/home/johnny/
):
for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; done
它会.2
在同一目录中创建文件。这些文件包含修改内容。
该for
语句列出了目录中的所有文件。如果您只想处理文本文件,则可以使用*.txt
而不是*
。
执行awk
2 项任务:
- 在每个文件前面添加“Hello”和空白行。
- 删除每行末尾的空格和制表符。
结果显示在标准输出上。
最后,简单的重定向.2
从处理后的标准输出中创建文件。
它适用于名称中带有空格的文件,因为$f
被引用。
如果不想保留原有文件,请修改命令如下:
for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; mv "$f.2" "$f"; done
主要新增内容是移动命令用修改后的版本替换原始文件。