Linux:文件之间带有分隔符的猫

Dan*_*ele 34 linux command cat

在 Linux 中,如果你输入 cat *,你会得到这样的信息:

line1 from file1
line2 from file1
line1 from file2
line1 from file3
line2 from file3
line3 from file3

我想要的是在文件之间显示分隔符。像这样:
line1 from file1
line2 from file1
XXXXXXXXXXXX
line1 from file2
XXXXXXXXXXXX
line1 from file3
line2 from file3
line3 from file3

使用易于用心打字的单行字体可以轻松实现吗?

Gil*_*il' 49

如果您对分隔符的外观不太挑剔:

tail -n +1 *
Run Code Online (Sandbox Code Playgroud)

  • `tail -n X` 显示最后 X 行。`tail -n +X` 从第 X 行开始 *从 1* 开始,即,它显示除前 (X-1) 行之外的所有行。 (2认同)

Jan*_*nen 18

cd /to/your/directory; for each in *; do cat $each; echo "XXXXXXXXXXX"; done


Den*_*son 12

awk 'FNR==1 && NR!=1 {print "XXXXXXXXXXXX"}{print}' *
Run Code Online (Sandbox Code Playgroud)

或者

awk 'FNR==1 {print "XXXXXX", FILENAME, "XXXXXX"}{print}' *
Run Code Online (Sandbox Code Playgroud)

或者

awk 'FNR==1 {print "XXXXXX File no. " ++count, "XXXXXX"}{print}' *
Run Code Online (Sandbox Code Playgroud)

仅使用 Bash(否cat):

for file in *; do printf "$(<"$file")\nXXXXXXXXXXXX\n"; done
Run Code Online (Sandbox Code Playgroud)

编辑:

在 AWK 4 中:

awk 'BEGINFILE {print "XXXXXXXXXXXX"}{print}' *
Run Code Online (Sandbox Code Playgroud)

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

  • +1 为 awk!我发誓它可以做任何事情...... (2认同)