如果我运行命令cat文件| grep pattern,我将得到许多行输出。如何将所有行连接成一行,有效地将每个“\n”替换为“\”(以“”结尾,后面加空格)?
Cat文件| grep模式| xargs sed s/\n/ /g 对我没用。
如果我运行命令cat文件| grep pattern,我将得到许多行输出。如何将所有行连接成一行,有效地将每个“\n”替换为“\”(以“”结尾,后面加空格)?
Cat文件| grep模式| xargs sed s/\n/ /g 对我没用。
当前回答
可能最好的方法是使用“awk”工具,它将生成输出到一行
$ awk ' /pattern/ {print}' ORS=' ' /path/to/file
它将使用空格分隔符将所有行合并为一行
其他回答
在不带引号的bash echo中,删除回车符、制表符和多个空格
echo $(cat file)
我喜欢xargs的解决方案,但如果不折叠空格很重要,那么可以这样做:
sed ':b;N;$!bb;s/\n/ /g'
这将为空格替换换行符,而不像tr '\n' ' ' '那样替换最后一行结束符。
这也允许你使用除空格之外的其他连接字符串,比如逗号等,这是xargs无法做到的:
$ seq 1 5 | sed ':b;N;$!bb;s/\n/,/g'
1,2,3,4,5
下面是使用ex编辑器(Vim的一部分)的方法:
连接所有行并打印到标准输出: $ x +%j +%p -scq!文件 (在文件中)原位连接所有行: $ ex +%j -scwq文件 注意:这将连接文件内部的所有行!
可能最好的方法是使用“awk”工具,它将生成输出到一行
$ awk ' /pattern/ {print}' ORS=' ' /path/to/file
它将使用空格分隔符将所有行合并为一行
通过管道输出到xargs将每一行输出连接到带有空格的一行:
grep pattern file | xargs
或任何命令。Ls | xargs。xargs输出的默认限制是~4096个字符,但是可以使用eg来增加。Xargs -s 8192。
Grep Xargs