【发布时间】:2015-03-12 03:09:06
【问题描述】:
我的文本文件有以下几行(实际上更长):
U-what's-WORD|C U--PW|C U-you-NW|C U-what's--W-PW|C U-PROGRAM-GAZ|C
U-timothy-WORD|C U--PW|C U-green-NW|C U-timothy--W-PW|C
U-life-WORD|C U-odd-PW|C U--NW|C U-life-odd-W-PW|C
U-green-PW|C U-life-NW|C U-PROGRAM-GAZ|C U-odd-green-W-PW|C
U-green-xxxxk-DISJP-CS|C U-timothy-xxxxk-DISJP-CS|C U-PROGRAM-GAZ1|C U-PROGRAM-GAZ|C
我想打印所有只包含“GAZ”的单词。如果一行不包含任何此类单词,则打印空行。
我尝试使用 grep 进行搜索,但它匹配并打印了整行。我尝试在 sed 中使用带有边界的捕获组 (\b.P.\b) 并打印该组 \1 无济于事。
编辑 一个简单的方法(我还不想实现)是编写一个 python 脚本。该脚本将逐行运行:
- 使用空格分隔符标记字符串
- 将每个标记与模式 P 匹配,如果匹配则打印出来
- 如果整行没有匹配,就打印空行
【问题讨论】:
-
所以你只想打印带有
P的所有单词? -
@hwnd,是的,我想打印所有匹配 P 模式的单词。应该删除所有其他单词(如果从这个角度来看)
-
@hwnd 它只匹配并打印 P。此外,没有匹配 P 的单词的行不会打印为空行。
-
在 grep 中使用
-o参数仅打印匹配项而不是整行。 -
@AvinashRaj 我将 -o 参数与 grep 一起使用。它只打印 P,而不是整个单词。 P 是我用来匹配我要打印的单词的子字符串。