Imprimir palavra que não contém caractere

Imprimir palavra que não contém caractere

Meu arquivo está no seguinte formato:

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

Minha saída deve ser:

test
column
no

Não deve conter o '!' personagem.

Eu tentei vários comandos sed e (e)grep, mas nenhum deles funcionou bem.

Responder1

Tente algo assim:

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

Responder2

Supondo que você realmente quis dizer...

test
column
no
column

... aqui está uma awksolução:

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

Responder3

requer GNU grep:

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

com base na sua entrada, isso informa:

test
column
no
column

Se você não quiser que a "coluna" apareça duas vezes:grep -oP '(?<=^|,)[^!]+(?=,|$)' | sort -u

Responder4

supondo que seu arquivo de texto seja test.txt, o seguinte:

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

me dá:

test
column
no
column

informação relacionada