usando gsub en awk para reemplazar una palabra con paréntesis


Respuestas:


4

Podría simplificar todo si usa el //formato para gsub:

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

Luego, podría simplificar aún más si usa printsin argumentos (que es lo mismo que print $0) o la 1abreviatura para imprimir (la awkacción predeterminada para expresiones que se evalúan como verdaderas, como 1;imprimir la línea actual):

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

Personalmente, sin embargo, no lo usaría awkpara esto, la sintaxis es más corta y limpia con otras herramientas:

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

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

2

Estabas muy cerca. Solo necesitabas dos \. Esto se debe a que uno de los conjuntos es para el texto en sí que pasa por BASH, y el otro sería el real \que awk analiza. Esto parece funcionar para mí:

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

Y da:

ABC/G
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.