代码之家  ›  专栏  ›  技术社区  ›  d-cubed Tyler Rinker

一条线同时使用SED和BC?

  •  2
  • d-cubed Tyler Rinker  · 技术社区  · 16 年前

    我想在sed中的字符串末尾的最后一个值中添加一个。 我在考虑

    cat 0809_data.csv |sed -e 's/\([0-9]\{6\}\).*\(,[^,]*$\)/\1\2/g'| export YEARS = $(echo `grep -o '[^,]*$' + 1`|bc)
    

    例如123456、KJHSFLK、LKSJGRLKS、2.8->123456、3.8

    这在awk中更合理/可行吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Dennis Williamson    16 年前

    这应该有效:

    years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)
    

    尝试使用会很尴尬 sed 对部分结果进行算术运算。你必须把绳子拉开,做数学运算,然后把所有的东西都放回一起。awk干净利落地做到了。

    注意到 cat 不需要(即使使用 塞德 在类似于问题中的命令中),可能不需要导出变量,除非您正在调用另一个脚本,并且需要它能够作为“全局”变量访问它。此外,shell通常进行整数计算,因此不需要使用 bc 除非你需要漂浮物。

    推荐文章