2009-12-04 9 views
2

파일에 대괄호를 삭제할 수있는 사람이 있습니까? 여기 .. ​​내 스크립트입니다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 
+0

샘플 입력 및 샘플 출력은 많은 도움이 될 것입니다. – SiegeX

+0

오류는 말할 것도 없습니다. 나는 추정한다 : '... 타의 추종을 불허하는 (또는 \ (' – retracile

답변

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 
+0

음 ... 뭐라구? sed를 실행하고 있지만 출력을 사용하지 않고있다. – retracile

2

짧은 답변 : 당신은 당신이하고있는 생각을 할 SED와 --in-place를 사용합니다.

괄호가 아닌 괄호를 삭제하고 각 줄의 첫 번째 괄호 만 삭제합니다 (필요하지 않은 경우 \을 삭제하면됩니다). 이것은 또한 엑셀 스프레드 시트에 할 수있는 이상한 일처럼 보입니다.

당신은 아마

0

에 대한 해결책을 찾을 수 ... 파이프에 나오지 명령의 출력이 대신하지만 장소에있는 파일을 수정하는 awk가 할 그냥 내가 tr -d ...을 사용

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

과 같이, 아무것도 문자를 대체하는 "TR"를 사용하는 것이 더 간단 보인다

$ echo "(this is my string)" | tr -d '()' 
this is my string 
관련 문제