基于grep从文件中切词

Cut words from files based on grep

我有一个小的 bash 脚本如下:

cat foo.txt | grep "balt" > bar_file

理想情况下,我希望将包含 "balt" 的每个单词从 foo.txt 文件中删除。我能得到关于如何根据 grepped 的内容从一个文件从另一个文件移动单词的指导吗?

附带说明:无需使用 cat 并将其输出通过管道传输到 grep,因为您可以将文件名直接传递给 grep,这减少了单个进程的执行.

至于你的问题,你可以 -o grep 的选项来获得只包含 balt 的匹配词以及 \b 边界检查,如下所示:

$ cat foo.txt 
abcd baltabcd xyz
xdef abbaltcd xyz
balt
$ grep -o '\b\w*balt\w*\b' foo.txt 
baltabcd
abbaltcd
balt
$ grep -o '\b\w*balt\w*\b' foo.txt > bar_file
$ cat bar_file 
baltabcd
abbaltcd
balt
$

如您所见,grep 匹配 balt 之前或之后出现的 0 个或多个单词字符,并将其放入另一个文件中。 示例词是:baltabcdabbaltcdbalt