Imprimir palabra que no contenga caracteres.

Imprimir palabra que no contenga caracteres.

Mi archivo está en el siguiente formato:

this!,is!,another!,test,yes!
this!,is!,another!,column,yes!
no,not!,another!,column

Mi salida debería ser:

test
column
no

No debería contener el '!' personaje.

Probé varios comandos sed y (e)grep, pero ninguno de ellos funciona del todo.

Respuesta1

Pruebe algo como esto:

tr ',' '\n' < file.txt | grep -v \!

Respuesta2

Suponiendo que realmente quisieras decir...

test
column
no
column

...aquí tienes una awksolución:

awk -v RS=, '{ for (i=1; i<=NF; i++) if($i !~ /!/) print $i; }'

Respuesta3

requiere grep GNU:

grep -oP '(?<=^|,)[^!]+(?=,|$)'

Según su entrada, que informa:

test
column
no
column

Si no desea que la "columna" aparezca dos veces:grep -oP '(?<=^|,)[^!]+(?=,|$)' | sort -u

Respuesta4

Suponiendo que su archivo de texto sea test.txt, lo siguiente:

for word in $(cat test.txt | sed -e 's/,/ /g'); do if [ ! "$( echo "$word" | grep '\!' )" == "$word" ]; then echo "$word"; fi; done

me da:

test
column
no
column

información relacionada