Grep 将一个文件作为输入,从另一个文件中删除其内容

Grep 将一个文件作为输入,从另一个文件中删除其内容,grep,bash,Grep,Bash,作为我正在编写的脚本的一部分,我需要将一个文件(单词列表)作为输入,并从另一个输入文件中删除这些单词的所有实例。我该怎么做这样的事?也许用?怎么样 $ grep -v -f words_to_exclude.txt input.txt 在哪里 -f指定希望grep匹配的单词文件 -v指定希望grep输出不匹配的内容 以上两个文件中每行需要一个单词。如何 $ grep -v -f words_to_exclude.txt input.txt 在哪里 -f指定希望grep匹配的单词文件 -v指定

作为我正在编写的脚本的一部分,我需要将一个文件(单词列表)作为输入,并从另一个输入文件中删除这些单词的所有实例。我该怎么做这样的事?也许用?

怎么样

$ grep -v -f words_to_exclude.txt input.txt
在哪里

-f
指定希望grep匹配的单词文件

-v
指定希望grep输出不匹配的内容

以上两个文件中每行需要一个单词。

如何

$ grep -v -f words_to_exclude.txt input.txt
在哪里

-f
指定希望grep匹配的单词文件

-v
指定希望grep输出不匹配的内容


上述两个文件中每行都需要一个单词。

man grep这样说:

-f FILE,--FILE=FILE 从文件中获取模式,每行一个。空文件包含零个模式,因此不匹配任何内容。(-f由POSIX指定。)

这是:

-v、 --反向匹配 反转匹配的意义,以选择不匹配的线。(-v由POSIX指定。)


所以,是的,使用grep将是一个好方法。至少要从输入文件中删除包含特殊单词的所有行。如果你只想删除单个单词,事情会变得更复杂。

曼格雷普说:

-f FILE,--FILE=FILE 从文件中获取模式,每行一个。空文件包含零个模式,因此不匹配任何内容。(-f由POSIX指定。)

这是:

-v、 --反向匹配 反转匹配的意义,以选择不匹配的线。(-v由POSIX指定。)


所以,是的,使用grep将是一个好方法。至少要从输入文件中删除包含特殊单词的所有行。如果你只想删除单个单词,事情会变得更复杂。

sed可能就是你想要的。示例脚本:

#! /usr/bin/bash
for word in $(cat $1); 
do
sed s/$word//g $2 > tmp;
mv tmp $2;
done;
假设您将其保存到script.sh中,您会这样称呼它:

./script.sh wordsToExclude.txt textToProcess.txt
$1
是bash中的“参数编号1”,在本例中
wordsToExclude.txt
,类似地,
$2
textToProcess.txt

这样做的目的是,它不使用任何内容替换$word的每个实例,tmpfile只是作为sed写入的缓冲区,这样它在工作时就不会破坏源代码


sed命令中的
g
是“全局替换标志”。sed的默认行为是只替换一行中第一个出现的搜索模式。
g
标志告诉sed替换所有出现的事件,而不仅仅是第一个。

sed可能就是您要查找的。示例脚本:

#! /usr/bin/bash
for word in $(cat $1); 
do
sed s/$word//g $2 > tmp;
mv tmp $2;
done;
假设您将其保存到script.sh中,您会这样称呼它:

./script.sh wordsToExclude.txt textToProcess.txt
$1
是bash中的“参数编号1”,在本例中
wordsToExclude.txt
,类似地,
$2
textToProcess.txt

这样做的目的是,它不使用任何内容替换$word的每个实例,tmpfile只是作为sed写入的缓冲区,这样它在工作时就不会破坏源代码


sed命令中的
g
是“全局替换标志”。sed的默认行为是只替换一行中第一个出现的搜索模式。<代码> g < /代码>标志告诉SED替换所有的事件,而不仅仅是第一个。

最好考虑用<代码> -f>代码>和<代码> -W/COD>这将删除包含匹配单词的整行,不仅仅是单词本身。最好考虑用<代码> -f>代码>和<代码> -W/COD>这将删除包含匹配单词的整行,而不仅仅是单词本身。这只解决了问题的一半;要从另一个文件中删除的整个文件中都是单词,而不仅仅是存储在变量中的单个单词。@chepner。我以为他一开始是在寻找答案的“部分”,而不是其他部分。这可能仍然是真的,但我还是编辑了答案;要从另一个文件中删除的整个文件中都是单词,而不仅仅是存储在变量中的单个单词。@chepner。我以为他一开始是在寻找答案的“部分”,而不是其他部分。这可能仍然是真的,但我还是编辑了答案。