Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux shell可过滤文件中的禁用字_Linux_Shell_Filter_Awk - Fatal编程技术网

Linux shell可过滤文件中的禁用字

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

贝壳爱好者们好

基本上我有两个文件:

frequency.txt:(包含单词和频率的多行、空格分隔的文件)

我有一个包含“禁止”字的文件:

stopwords.txt:(一行,空格分隔的文件)

所以我想从frequency.txt中删除包含stopwords.txt中找到的单词的所有行

我怎么能这么做?我想这可以用awk来完成。。差不多

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;i
tr'\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