如果我运行命令cat文件| grep pattern,我将得到许多行输出。如何将所有行连接成一行,有效地将每个“\n”替换为“\”(以“”结尾,后面加空格)?
Cat文件| grep模式| xargs sed s/\n/ /g 对我没用。
如果我运行命令cat文件| grep pattern,我将得到许多行输出。如何将所有行连接成一行,有效地将每个“\n”替换为“\”(以“”结尾,后面加空格)?
Cat文件| grep模式| xargs sed s/\n/ /g 对我没用。
当前回答
下面是另一个使用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
其他回答
下面是使用ex编辑器(Vim的一部分)的方法:
连接所有行并打印到标准输出: $ x +%j +%p -scq!文件 (在文件中)原位连接所有行: $ ex +%j -scwq文件 注意:这将连接文件内部的所有行!
在不带引号的bash echo中,删除回车符、制表符和多个空格
echo $(cat file)
通过管道输出到xargs将每一行输出连接到带有空格的一行:
grep pattern file | xargs
或任何命令。Ls | xargs。xargs输出的默认限制是~4096个字符,但是可以使用eg来增加。Xargs -s 8192。
Grep Xargs
这可能就是你想要的
cat file | grep pattern | paste -sd' '
至于你的编辑,我不确定是什么意思,也许是这个?
cat file | grep pattern | paste -sd'~' | sed -e 's/~/" "/g'
(这里假设~不会出现在文件中)
下面是另一个使用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