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 awk
soluçã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