안녕하세요 gsub를 사용하여 괄호가있는 단어를 대체하려면 어떻게해야합니까?
여기 ABC (T)를 ABC / G로 바꾸고 싶습니다.
awk " {gsub("ABC\(T\)","ABC/G")}; Print $0" "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"
Answer
gsub
에 //
형식을 사용하면 모든 것을 단순화 할 수 있습니다.
$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}; print $0" ABC/G
그런 다음 인수없이 print
를 사용하여 더 단순화 할 수 있습니다 (print $0
와 동일). 인쇄를위한 1
속기 (1;
<와 같이 true로 평가되는 표현식에 대한 기본 awk
작업) / div>는 현재 줄을 인쇄하는 것입니다.) :
$ 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
Answer
아주 친했습니다. 두 개의 \
만 필요했습니다. 세트 중 하나는 BASH를 통과하는 텍스트 자체를위한 것이고 다른 하나는 awk에 의해 파싱되는 실제 \
이기 때문입니다. 이것은 나를 위해 일하는 것 같습니다.
echo "ABC(T)" | awk " {gsub("ABC\\(T\\)","ABC/G")}; Print $0" "$FILENAME"
그리고 다음을 제공합니다 :
ABC/G