Linux:cat 在文件之间使用分隔符

Linux:cat 在文件之间使用分隔符

在 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}' *

您可以使用任何分隔符,例如本答案中其他示例中的分隔符。如果希望分隔符位于每个文件的末尾,请更改BEGINFILEENDFILE。它仍然可以出现在脚本的开头,因为它是条件性的(而不是暗示执行顺序)。

相关内容