如何在 Bash 中合并带有分隔数据的文件?

如何在 Bash 中合并带有分隔数据的文件?

因此,可以使用 cat 轻松地在 bash 中合并文件:

cat *.txt > all.txt

但是如果有人想在输入文件之间插入一些内容,比如换行符,该怎么办呢?

答案1

需要 GNU sed

sed -s '$G' *.txt > all.txt

在每个文件后附加一行 8 个破折号和一个换行符

sed -s '$a--------' *.txt

你可以使用 sed '$d'

与这些比较:

在每个文件前插入一行破折号:

sed -s '1i--------' *.txt

执行相同操作,但在破折号后不加换行符:

sed -s '1s/^/--------/' *.txt

在每个文件的最后一行末尾放置一行破折号:

sed -s '$s/$/--------/' *.txt

用花括号将每个文件括起来:

sed -s -e '1i{' -e '$a}' *.txt

答案2

作为带有子 shell 的单行命令:

( for i in *.txt ; do cat $i ; echo 'separator here' ; done ) >all.txt

以下是子 shell 执行的脚本样式行:

对于我在 *.txt 中
猫$i
echo ‘分隔符放在这里’
完毕

在此示例中,分隔符的作用类似于页脚;echo在 之前添加另一个分隔符即可添加页眉cat

相关内容