Mi archivo ficticio se ve así:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
Quiero obtener una línea si hay una cadena snowen $ 3. Puedo hacer esto así:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
Pero debería haber una forma más sencilla.

'$3~/snow/'suficienteTambién es posible buscando una subcadena con la función index ():
awk '(index($3, "snow") != 0) {print}' dummy_fileVersión más corta:
awk 'index($3, "snow")' dummy_filefuente
awk 'index($3, "snow")' dummy_fileTal vez esto ayude
http://www.math.utah.edu/docs/info/gawk_5.html
awk '$3 ~ /snow|snowman/' dummy_filefuente
Imprima líneas donde el tercer campo sea
snowosnowmansolo:awk '$3~/^snow(man)?$/' filefuente
GNU sed
sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' fileEntrada:
C1 C2 C3 1 una nieve 2 b muñeco de nieve nieve c sowman nieve nieve muñeco de nieve..salida:
fuente
sedpara palabras completas. Aunque técnicamente posible, para que eso funcione de manera confiable, tuve que usar mirar atrás, mirar hacia adelante y!?construcciones cuando se trataba de palabras que no deberían seguir. Esto no es nada para los débiles de corazón, eso es seguro. (Y propenso a errores que pueden consumir mucho tiempo para encontrarlos y corregirlos).