Linux shell可过滤文件中的禁用字
贝壳爱好者们好 基本上我有两个文件: frequency.txt:(包含单词和频率的多行、空格分隔的文件) 我有一个包含“禁止”字的文件: stopwords.txt:(一行,空格分隔的文件) 所以我想从frequency.txt中删除包含stopwords.txt中找到的单词的所有行 我怎么能这么做?我想这可以用awk来完成。。差不多Linux shell可过滤文件中的禁用字,linux,shell,filter,awk,Linux,Shell,Filter,Awk,贝壳爱好者们好 基本上我有两个文件: frequency.txt:(包含单词和频率的多行、空格分隔的文件) 我有一个包含“禁止”字的文件: stopwords.txt:(一行,空格分隔的文件) 所以我想从frequency.txt中删除包含stopwords.txt中找到的单词的所有行 我怎么能这么做?我想这可以用awk来完成。。差不多 awk 'match($0,SOMETHING_MAGICAL_HERE) == 0 {print $0}' frequency.txt > new.tx
awk 'match($0,SOMETHING_MAGICAL_HERE) == 0 {print $0}' frequency.txt > new.txt
但我不是很确定。。。有什么想法吗??thxs提前这将为您做到:
tr ' ' '\n' <stopwords.txt | grep -v -w -F -f - frequency.txt
tr''\n'$awk'FNR==NR{for(i=1;itr'\n'
-w
到grep
对于避免stopwords.txt中的le
删除包含le
的单词非常重要,例如less
或little加入-v1并在其中抛出一个-F
,以使其更快一点(并避免出现任何“单词”时出现问题)包含
或其他不寻常的字符)。停止字在一行中,-f希望它们在单独的行中。Hmmm…此外,例如stopwords.txt中出现的le
将删除包含le
的任何行(例如less
,little
).thxs..它有效..即使那个人说stopwords.txt上的单词应该是分开的行啊等等..也许@j_random_hacker是正确的..我会验证您是否也可以使用tr:tr''将空格分隔的文件转换为换行分隔的文件\n'infle outfileyeap…您正在编写..我确实需要-w
。来自@g的awkhostdog74也在工作,但使用grep外观cleaner@Dan:正确地说:)+1对你和+1对主人。
join -v1 <(sort frequency.txt) <(tr ' ' '\n' <stopwords.txt|sort) | sort -k2,2rn
tr ' ' '\n' <stopwords.txt | grep -v -w -F -f - frequency.txt
$ awk 'FNR==NR{for(i=1;i<=NF;i++)w[$i];next}(!($1 in w))' stop.txt freq.txt
de 1711
a 936
et 762
la 530
les 482
pour 439
tr ' ' '\n' < stopwords.txt | grep -vwFf - frequency.txt
join -v1 <(sort frequency.txt) <(tr ' ' '\n' <stopwords.txt|sort) | sort -k2,2rn