Ciao come posso usare gsub per sostituire una parola che ha parentesi.
Qui Voglio sostituire ABC (T) con ABC / G
awk " {gsub("ABC\(T\)","ABC/G")}; Print $0" "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"
Risposta
Potresti semplificare il tutto se utilizzi il formato //
per gsub
:
$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}; print $0" ABC/G
Quindi, potresti semplificare ulteriormente utilizzando print
senza argomenti (che è uguale a print $0
) o labbreviazione 1
per la stampa (lazione awk
predefinita per le espressioni che restituiscono true, come 1;
serve a stampare la riga corrente):
$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}1" ABC/G
Personalmente, tuttavia, non userei awk
per questo, la sintassi è più breve e più pulita con altri strumenti:
$ echo "ABC(T)" | sed "s|ABC(T)|ABC/G|" ABC/G $ echo "ABC(T)" | perl -pe "s|ABC\(T\)|ABC/G|" ABC/G
Risposta
Eri molto vicino. Ti servivano solo due \
. Questo perché uno di set è per il testo stesso che passa attraverso BASH, e laltro sarebbe lattuale \
che viene analizzato da awk. Questo sembra funzionare per me:
echo "ABC(T)" | awk " {gsub("ABC\\(T\\)","ABC/G")}; Print $0" "$FILENAME"
e dà:
ABC/G