打印不包含字符的单词

打印不包含字符的单词

我的文件采用以下格式:

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

相关内容