如果我运行命令cat文件| grep pattern,我将得到许多行输出。如何将所有行连接成一行,有效地将每个“\n”替换为“\”(以“”结尾,后面加空格)?

Cat文件| grep模式| xargs sed s/\n/ /g 对我没用。


当前回答

在不带引号的bash echo中,删除回车符、制表符和多个空格

echo $(cat file)

其他回答

通过管道输出到xargs将每一行输出连接到带有空格的一行:

grep pattern file | xargs

或任何命令。Ls | xargs。xargs输出的默认限制是~4096个字符,但是可以使用eg来增加。Xargs -s 8192。

Grep Xargs

在不带引号的bash echo中,删除回车符、制表符和多个空格

echo $(cat file)

使用tr '\n' ' '将所有换行符转换为空格:

$ grep pattern file | tr '\n' ' '

注:grep读取文件,cat连接文件。不要cat文件| grep!

编辑:

Tr只能处理单个字符的转换。您可以使用awk更改输出记录分隔符,如下所示:

$ grep pattern file | awk '{print}' ORS='" '

这将转化为:

one
two 
three

to:

one" two" three" 

下面是另一个使用awk的简单方法:

# cat > file.txt
a
b
c

# cat file.txt | awk '{ printf("%s ", $0) }'
a b c

此外,如果你的文件有列,这提供了一个简单的方法来连接某些列:

# cat > cols.txt
a b c
d e f

# cat cols.txt | awk '{ printf("%s ", $2) }'
b e

可能最好的方法是使用“awk”工具,它将生成输出到一行

$ awk ' /pattern/ {print}' ORS=' ' /path/to/file

它将使用空格分隔符将所有行合并为一行