【问题标题】:increment output of pipe by 1 in shell在shell中将管道的输出增加1
【发布时间】:2022-10-18 16:35:55
【问题描述】:

例如: echo "abcdef_312345" | cut -b 9 --> 输出将是1,所以我想在同一行中将它增加1

这是答案的模板:

echo "abcdef_312345" | cut -b 9 | <command to increment by 1>

【问题讨论】:

    标签: bash pipe


    【解决方案1】:

    消除子流程开销:

    $ x="abcdef_312456"
    $ y=$(( ${x:8:1} + 1 ))
    $ echo "${y}"
    2
    

    【讨论】:

      【解决方案2】:

      你可以做 :

      echo "abcdef_312345" | cut -b 9 | awk '{print $1 + 1}'
      

      但是cut | awk 是一种反模式,所以你应该这样做:

      echo "abcdef_312345" | awk '{print $9 + 1}' FS=
      

      【讨论】:

      • 或者只是awk '{print $9+1}' FS= &lt;&lt;&lt; "abcdef_312345"
      【解决方案3】:

      尝试

      echo "abcdef_312345" | cut -b 9 | expr "$(cat)" + 1
      

      【讨论】:

        猜你喜欢
        • 2017-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 2018-05-27
        相关资源
        最近更新 更多