Напечатать слово, не содержащее символ

Напечатать слово, не содержащее символ

Мой файл имеет следующий формат:

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

Мой вывод должен быть таким:

test
column
no

Он не должен содержать символ «!».

Я перепробовал несколько команд sed и (e)grep, но ни одна из них не работает.

решение1

Попробуйте что-то вроде этого:

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

решение2

Предполагая, что вы действительно имели в виду...

test
column
no
column

...вот awkрешение:

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

решение3

требуется GNU grep:

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

на основе ваших данных, который сообщает:

test
column
no
column

Если вы не хотите, чтобы слово «column» появлялось дважды:grep -oP '(?<=^|,)[^!]+(?=,|$)' | sort -u

решение4

Предположим, что ваш текстовый файл выглядит test.txtследующим образом:

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

дает мне:

test
column
no
column

Связанный контент