我的文件采用以下格式:
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