首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接文件并在文件之间插入新行

连接文件并在文件之间插入新行
EN

Stack Overflow用户
提问于 2011-11-18 21:32:33
回答 7查看 142.7K关注 0票数 150

我有多个文件要与cat连接。比方说

代码语言:javascript
复制
File1.txt 
foo

File2.txt
bar

File3.txt
qux

我想连接起来,这样最终的文件看起来就像这样:

代码语言:javascript
复制
foo

bar

qux

而不是使用通常的cat File*.txt > finalfile.txt

代码语言:javascript
复制
foo
bar 
qux

什么才是正确的方法呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-11-18 21:36:18

您可以执行以下操作:

代码语言:javascript
复制
for f in *.txt; do (cat "${f}"; echo) >> finalfile.txt; done

在运行上述命令之前,请确保文件finalfile.txt不存在。

如果允许您使用awk,您可以执行以下操作:

代码语言:javascript
复制
awk 'FNR==1{print ""}1' *.txt > finalfile.txt
票数 146
EN

Stack Overflow用户

发布于 2014-05-09 02:32:10

如果您的文件足够少,可以列出每个文件,那么可以在Bash中使用process substitution,在每对文件之间插入一个换行符:

代码语言:javascript
复制
cat File1.txt <(echo) File2.txt <(echo) File3.txt > finalfile.txt
票数 66
EN

Stack Overflow用户

发布于 2011-11-18 21:41:10

如果是我做的,我会使用sed:

代码语言:javascript
复制
sed -e '$s/$/\n/' -s *.txt > finalfile.txt

在这个sed模式中,$有两层含义,第一,它只匹配最后的行号(作为要应用模式的行的范围);第二,它匹配替换模式中的行尾。

如果您的sed版本没有-s (单独处理输入文件),那么您可以将其作为一个循环来完成:

代码语言:javascript
复制
for f in *.txt ; do sed -e '$s/$/\n/' $f ; done > finalfile.txt
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8183191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档