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 awk
solució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