【问题标题】:Cut words from files based on grep基于 grep 从文件中剪切单词
【发布时间】:2016-10-25 14:57:39
【问题描述】:

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

cat foo.txt | grep "balt" > bar_file

理想情况下,我希望将包含"balt" 的每个单词从foo.txt 文件中删除。我可以根据 grepped 的内容获得有关如何基本上从一个文件中移动单词的指导。

【问题讨论】:

  • 所以你想删除任何包含“balt”的单词并将其余的转移到另一个文件中?
  • 如果单词包含“balt”,则从 foo.txt 文件中删除它并将整个单词粘贴到另一个(新)文件中。 @ritesht93

标签: bash shell grep cut


【解决方案1】:

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

至于您的问题,您可以通过grep-o 选项来获得仅包含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

【讨论】:

  • 可以使用-w选项来避免使用\b
  • @Sundeep 好吧 .. 这也可以是一个替代方案
猜你喜欢
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多