在 Linux 中如果你输入 cat *,你将会得到如下内容:
来自文件 1 的行1
来自文件 1 的行 2 来自文件 2
的行
1 来自文件 3 的行 1 来自
文件 3 的行 2 来自文件 3
的行 3 ...
我想要的是显示文件之间的分隔符。如下所示:
line1 from file1
line2 from file1
XXXXXXXXXXXX
line1 from file2
XXXXXXXXXXXX
line1 from file3
line2 from file3
line3 from file3
只需简单地输入一行代码就能轻松实现这一点吗?
答案1
如果您对分隔符的外观不是太挑剔:
tail -n +1 *
答案2
cd /to/your/directory; for each in *; do cat $each; echo "XXXXXXXXXXX"; done
答案3
awk 'FNR==1 && NR!=1 {print "XXXXXXXXXXXX"}{print}' *
或者
awk 'FNR==1 {print "XXXXXX", FILENAME, "XXXXXX"}{print}' *
或者
awk 'FNR==1 {print "XXXXXX File no. " ++count, "XXXXXX"}{print}' *
仅使用 Bash(无cat
):
for file in *; do printf "$(<"$file")\nXXXXXXXXXXXX\n"; done
编辑:
在 AWK 4 中:
awk 'BEGINFILE {print "XXXXXXXXXXXX"}{print}' *
您可以使用任何分隔符,例如本答案中其他示例中的分隔符。如果希望分隔符位于每个文件的末尾,请更改BEGINFILE
为ENDFILE
。它仍然可以出现在脚本的开头,因为它是条件性的(而不是暗示执行顺序)。