안녕하세요, 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
단축 인쇄( awk
true로 평가되는 표현식의 기본 동작(예: 현재 행 인쇄))를 사용하여 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