【问题标题】:How can I remove the line endings from output如何从输出中删除行尾
【发布时间】:2020-06-04 00:17:07
【问题描述】:

我正在运行的命令是:

locate -b '\java' | xargs -ri  find {} -prune -type f -executable | xargs bash -c '$0 -version'

下面是回复

java version "1.6.0_41"
OpenJDK Runtime Environment (IcedTea6 1.13.13) (rhel-1.13.13.1.el6_8-x86_64)
OpenJDK 64-Bit Server VM (build 23.41-b41, mixed mode)

我希望做的是把这一切放在 1 行。

我尝试了各种 sed 和 awk,但总是以 3 行返回。

【问题讨论】:

  • locate -b '\java' 命令的输出是什么?
  • java -version 的输出是进入 stdout 还是 stderr?至少显示您尝试过的各种 sed 和 awk 脚本之一,以便我们帮助您找出它/它们的问题。
  • @EdMorton locate -b '\java' | xargs -ri find {} -prune -type f -executable | xargs bash -c '$0 -version' | awk '{print $2}' 这似乎没有任何作用
  • 你没有回答我关于Is the output of java -version going to stdout or stderr? awk '{print $2}' 的问题会从每个输出行打印第二个空格分隔的字段,这与您希望做的完全不同(即加入多个如果我正确理解您的问题,请输入 1)。
  • 你在问如何删除行尾;你就是这样做的。我在您的问题中没有看到任何迹象表明您已经对此进行了探索。

标签: bash awk sed tr


【解决方案1】:

添加:

| awk '{printf "%s%s", sep, $0; sep=OFS} END{print ""}'

到您现有管道的末尾。如果这不会改变输出,那么它很可能会转到 stderr 而不是 stdout 所以然后将上面的内容更改为:

2>&1 | awk '{printf "%s%s", sep, $0; sep=OFS} END{print ""}'

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2023-03-15
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多