【问题标题】:Adding a row to output of piped command在管道命令的输出中添加一行
【发布时间】:2013-08-09 06:09:27
【问题描述】:

我有一个管道命令说

command1 | command2 | command3

或者让我们说类似

ps | grep "something" 

现在到命令的输出,我想使用 shell 脚本在每个列的顶部添加一些标签或数据。

编辑
总之这就是我想要的

InsertedLabel1   Inslabel2        Inslabel3
Data1frompipe     Data1frompipe     Data1frompipe
Data2frompipe    Data2frompipe     Data2frompipe

有什么简单的方法可以做到这一点?

【问题讨论】:

    标签: bash shell ls


    【解决方案1】:

    如果您希望标题与列对齐,您可以使用恰当命名的 column 实用程序(BSD 扩展,但大多数 Linux 发行版也附带)。要将现有文本重新格式化为对齐的列,请使用 -t 选项。

    您可以使用复合语句插入列标题:

    command1 | command2 | { echo Header1 Header2 Header3; command3 } | column -t
    

    或:

    { echo Header1 Header2 Header3; command1 | command2 | command3 } | column -t
    

    (你觉得哪个更易读。)

    请注意,标题中可能没有空格,数据元素也可能没有。如果您的数据不是用空格分隔的,您可以使用 -s 选项指定不同的分隔符;请记住为您的标题使用相同的分隔符。

    column 左对齐所有列,因此数字列看起来不像您希望的那样漂亮。

    【讨论】:

      【解决方案2】:

      您可以在 shell 中使用块来插入另一个命令,并使用它在另一个命令的输出之前或之后插入行,例如在 grep 之前回显:

      ps | { echo "header"; grep "something"; }
      

      为了让您更轻松地编写脚本,您可以使用以下表单:

      ps | {
          echo "header"
          grep "something"
          # possibly other echos here.
      }
      

      在 awk 中你可以使用 BEGIN:

      ps | awk 'BEGIN { print "header"; } /something/;'
      

      和/或 END 添加尾行:

      ps | awk 'BEGIN { print "header"; } /something/; END { print "------"; }'
      

      当然,如果你有两个以上的命令,你可以只使用最后一个表单

      command | command | { echo "header"; grep "something"; }
      

      或者

      command | command | awk 'BEGIN { print "header"; } /something/;'
      

      【讨论】:

      • 如果返回的输出有多个列,我想在每个列的顶部添加不同的标签?
      • @Stormvirux 这将特定于输出,但基本上不会格式化字符串(“标题”)能够实现这一点?例如将“标题”替换为"InsertedLabel1 Inslabel2 Inslabel3"
      • 标签之间的间距呢?如果数据长度增加,标签会相应地对齐吗?不对吧??
      • @Stormvirux 好吧,在这种情况下,这不再只是根据您的原始问题在输出中添加一个标题行,而且更复杂。您需要使用 awk 来读取整组行并计算列和每行的最大长度。在 END 块上,您必须打印它。
      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 2019-11-08
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2015-05-25
      相关资源
      最近更新 更多