【问题标题】:deleting brackets in a file using sed使用 sed 删除文件中的括号
【发布时间】:2010-12-23 09:13:44
【问题描述】:

谁能帮我删除文件中的括号? 这是我的脚本..

  #!/bin/bash

for file in fftw is_c mpi_tile pmb tau xhpl
do
    for state in C0 C1 C2 C4
    do
    printf "${file}_${state}_v1.xls"

    sed -e 's/\(//' ${file}_${state}_v1.xls
    sed -e 's/\)//' ${file}_${state}_v1.xls

    awk '{sum+=$3} ; END {print "  ", sum/NR}' ${file}_${state}_v1.xls >> c-state-residency.xls
    done
done

【问题讨论】:

  • 样本输入和样本输出将非常有益
  • 更不用说你得到的错误了。我想:... Unmatched ( or \(

标签: bash scripting sed


【解决方案1】:

简答:使用 --in-place 和 sed 来做你认为你正在做的事情。

您要删除括号,而不是括号,并且只删除每行的第一个(或者如果您删除了不需要的 \,您会删除)。对于 Excel 电子表格,这似乎也是一件奇怪的事情。

您可能希望将 sed 命令的输出通过管道传输到 awk,而不是在适当的位置修改文件...

【讨论】:

    【解决方案2】:

    我会使用tr -d ...,就像这样:

    $ echo "(this is my string)" | tr -d '()' 
    this is my string
    

    【讨论】:

      【解决方案3】:

      找到删除特殊字符的解决方案

      #!/bin/bash
      
      for file in fftw is_c mpi_tile pmb tau xhpl
      do
          for state in C0 C1 C2 C4
          do
          printf "${file}_${state}_v1.xls"
          sed -e 's/[()]//g' ${file}_${state}_v1.xls
          awk '{sum+=$3} ; END {print "Average C-state residency  ", sum/NR}' ${file}_${state}_v1.xls >> c-state-residency.xls
          done
      done
      

      【讨论】:

        【解决方案4】:

        与其使用 sed,不如只使用 "tr" 将字符替换为空字符似乎更简单

         cat ${file}_${state}_v1.xls | tr '(' '' | tr ')' '' > ${file}_${state}_v1.xls
        

        【讨论】:

          猜你喜欢
          • 2022-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-16
          • 2021-12-12
          • 2021-09-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多