基于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 个或多个单词字符,并将其放入另一个文件中。
示例词是:baltabcd
、abbaltcd
和 balt
我有一个小的 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 个或多个单词字符,并将其放入另一个文件中。
示例词是:baltabcd
、abbaltcd
和 balt