awk에서 gsub를 사용하여 단어를 대괄호로 바꾸기

awk에서 gsub를 사용하여 단어를 대괄호로 바꾸기

안녕하세요, gsub를 사용하여 괄호 안에 있는 단어를 바꾸는 방법입니다.

여기서는 ABC(T)를 ABC/G로 바꾸고 싶습니다.

awk ' {gsub("ABC\(T\)","ABC/G")}; Print $0' "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"

답변1

//다음 형식을 사용하면 모든 것을 단순화할 수 있습니다 gsub.

$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}; print $0'
ABC/G

print그런 다음 인수 없음( 과 동일 print $0) 또는 1단축 인쇄( awktrue로 평가되는 표현식의 기본 동작(예: 현재 행 인쇄))를 사용하여 1;더욱 단순화 할 수 있습니다 .

$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}1'
ABC/G

그러나 개인적으로 저는 awk이 도구를 사용하지 않을 것입니다. 다른 도구에는 더 짧고 명확한 구문이 있습니다.

$ echo "ABC(T)" | sed 's|ABC(T)|ABC/G|'
ABC/G

$ echo "ABC(T)" | perl -pe 's|ABC\(T\)|ABC/G|'
ABC/G

답변2

당신은 매우 가깝습니다. 2개만 있으면 됩니다 \. 이는 컬렉션 중 하나가 BASH를 통한 텍스트 자체이고 다른 컬렉션은 \awk에 의해 구문 분석되는 실제 텍스트이기 때문입니다. 이것은 나에게 효과적인 것 같습니다.

echo 'ABC(T)' | awk ' {gsub("ABC\\(T\\)","ABC/G")}; Print $0' "$FILENAME"

그리고 다음을 제공합니다:

ABC/G

관련 정보