文字を含まない単語を印刷する

文字を含まない単語を印刷する

私のファイルの形式は次のとおりです:

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

「列」を 2 回表示したくない場合は、次のようにします。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

関連情報