【问题标题】:Optimize shell one liner优化外壳一内胆
【发布时间】:2010-12-27 09:54:43
【问题描述】:

需要优化 UNIX shell 一层

cat ${TEMPFILE} | cut -d ' ' -f1 | sed '/^$/d'| sed '1,4d'| sed 's/$/|ON_ICE|OFF_ICE/g' > ${MYREPORT}

因为这会导致性能问题。

【问题讨论】:

    标签: shell unix


    【解决方案1】:

    只调用一次 sed:

    cat ${TEMPFILE}|cut -d ' ' -f1|sed '/^$/d;1,4d;s/$/|ON_ICE|OFF_ICE/g'>${MYREPORT}
    

    【讨论】:

    • 应该很明显,但是里面也有 cat 没用的地方。
    【解决方案2】:

    按如下方式使用awk:

    awk '{$0=$1};if (NF>1){++rec}; if(NF > 1 && rec > 4 ){sub(/$/,"|ON_ICE|OFF_ICE")); print};' ${TEMPFILE} > ${MYREPORT}
    

    【讨论】:

      【解决方案3】:
      awk '/^$/ || ++count <= 4 {next} {print $1 "|ON_ICE|OFF_ICE"}' "$TEMPFILE" > "$MYREPORT"
      

      【讨论】:

        【解决方案4】:

        cat ${TEMPFILE} | cut -d ' ' -f1 | sed '/^$/d' | sed '1,4d' | sed 's/$/|ON_ICE|OFF_ICE/g' > ${MYREPORT}
        

        显然你可以用 tail +4 替换 sed '1,4d'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-21
          • 2010-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-27
          • 1970-01-01
          相关资源
          最近更新 更多