我有多个文件要与cat连接。比方说
File1.txt
foo
File2.txt
bar
File3.txt
qux我想连接起来,这样最终的文件看起来就像这样:
foo
bar
qux而不是使用通常的cat File*.txt > finalfile.txt
foo
bar
qux什么才是正确的方法呢?
发布于 2011-11-18 21:36:18
您可以执行以下操作:
for f in *.txt; do (cat "${f}"; echo) >> finalfile.txt; done在运行上述命令之前,请确保文件finalfile.txt不存在。
如果允许您使用awk,您可以执行以下操作:
awk 'FNR==1{print ""}1' *.txt > finalfile.txt发布于 2014-05-09 02:32:10
如果您的文件足够少,可以列出每个文件,那么可以在Bash中使用process substitution,在每对文件之间插入一个换行符:
cat File1.txt <(echo) File2.txt <(echo) File3.txt > finalfile.txt发布于 2011-11-18 21:41:10
如果是我做的,我会使用sed:
sed -e '$s/$/\n/' -s *.txt > finalfile.txt在这个sed模式中,$有两层含义,第一,它只匹配最后的行号(作为要应用模式的行的范围);第二,它匹配替换模式中的行尾。
如果您的sed版本没有-s (单独处理输入文件),那么您可以将其作为一个循环来完成:
for f in *.txt ; do sed -e '$s/$/\n/' $f ; done > finalfile.txthttps://stackoverflow.com/questions/8183191
复制相似问题