![合并两个文本文件并在之间添加一些分隔符?](https://linux22.com/image/58046/%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E5%B9%B6%E5%9C%A8%E4%B9%8B%E9%97%B4%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%BA%9B%E5%88%86%E9%9A%94%E7%AC%A6%EF%BC%9F.png)
cat file1 file2
将合并两个文本文件。但是,如果我想在之间添加一些分隔符,例如一行或两行********************************
,我是否必须打开第一个文件,并在其末尾添加该行,或者打开第二个文件并在其顶部添加该行,然后运行命令cat
?只需要运行一个命令就可以完成吗?
答案1
在bash
,zsh
你可以这样做:
cat file1 <(echo '********************************') file2
或如 mikeserv 在他的评论中指出的那样(在任何 shell 中):
echo '********************************' | cat file1 - file2
David Z 在 Bash 中评论道:
cat file1 - file2 <<< '********************************'
文件中的任何换行符都会显示。如果您不想在“分隔符”之后添加换行符(例如,如果file2
以换行符开头),则可以使用echo -n '****'
,因此请抑制 后的换行符*
。
答案2
答案3
您还可以将其拆分为多个命令:
cat file1; echo '------------'; cat file2
您可以使用组命令或子 shell 进行管道传输或重定向:
# GROUP COMMAND:
{ cat file1; echo '----------'; cat file2; } | other-command
# ^ final semicolon is part of the syntax!
# SUBSHELL:
( cat file1; echo '----------'; cat file2 ) | other-command
当然,您可以将其写在多行上,而不是像平常一样使用分号。并且可以很容易地使用另一个分隔符等扩展到另一个文件。
答案4
使用find
的参数-printf
和 -exec
,结合使用,cat
您可以在文件内容之前和之后放置文本。
find . -type f -name "*.txt" -printf "/n This is before! \n" -exec cat {} \; -printf "/n This is after! /n" >> output.txt