Drucken Sie ein Wort, das kein Zeichen enthält

Drucken Sie ein Wort, das kein Zeichen enthält

Meine Datei hat das folgende Format:

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

Meine Ausgabe sollte sein:

test
column
no

Es sollte nicht das Zeichen „!“ enthalten.

Ich habe mehrere sed- und (e)grep-Befehle ausprobiert, aber keiner davon funktioniert richtig.

Antwort1

Versuchen Sie etwas wie Folgendes:

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

Antwort2

Vorausgesetzt, Sie haben es wirklich so gemeint ...

test
column
no
column

...hier ist eine awkLösung:

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

Antwort3

erfordert GNU grep:

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

Basierend auf Ihrer Eingabe wird Folgendes gemeldet:

test
column
no
column

Wenn Sie nicht möchten, dass „Spalte“ zweimal erscheint:grep -oP '(?<=^|,)[^!]+(?=,|$)' | sort -u

Antwort4

Angenommen, Ihre Textdatei ist test.txt, dann das Folgende:

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

gibt mir:

test
column
no
column

verwandte Informationen