如何将多行输出连接到一行?

新手上路,请多包涵

如果我运行命令 cat file | grep pattern ,我会得到很多行输出。如何将所有行连接成一行,有效地将每个 "\n" 替换为 "\" " (以 " 结尾,后跟空格)?

cat file | grep pattern | xargs sed s/\n/ /g 不适合我。

原文由 T. Webster 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 619
2 个回答

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

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

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

编辑:

tr 只能处理单字符翻译。您可以使用 awk 更改输出记录分隔符,如:

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

这将改变:

 one
two
three

至:

 one" two" three"

原文由 Chris Seymour 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 grep pattern file | xargs

或任何命令,例如。 ls | xargsxargs 输出的默认限制是 ~4096 个字符,但可以通过例如增加。 xargs -s 8192

grep xargs

原文由 bluebadge 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题