使用sed删除文件中的括号

时间:2009-12-04 19:50:15

标签: bash scripting sed

任何人都可以帮我删除文件中的括号吗? 这是我的剧本..

  #!/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

4 个答案:

答案 0 :(得分:2)

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

您正在删除括号,而不是括号,只删除每行中的第一个(或者如果您删除了不需要的\,则会删除。)这对Excel电子表格来说似乎也很奇怪。

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

答案 1 :(得分:1)

我会使用tr -d ...,如下所示:

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

答案 2 :(得分:0)

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

#!/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

答案 3 :(得分:0)

而不是使用sed,使用“tr”替换没有任何内容的字符似乎更简单

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