命令行过滤文本行中的单词

时间:2012-06-11 18:35:26

标签: python command-line grep filtering

如何使用命令行工具从文本行中过滤掉某些单词?

示例:

line 1: All's Well That Ends Well
filter: That Well
output: Well That Well

注意:过滤后仍会出现两次重复出现。

除了一系列GNU实用程序之外,我还可以使用Python脚本。

4 个答案:

答案 0 :(得分:2)

您可以将文本发送(管道)到grep,如下所示:

echo "All's Well That Ends Well" | grep -o '\(That\|Well\)'

答案 1 :(得分:2)

添加\b以匹配字词边界。更长的单词(例如Wellness)将被拒绝。

echo "All's Well That Ends Well" | grep -o '\(\bThat\b\|\bWell\b\)'

答案 2 :(得分:0)

>>> l="All's Well That Ends Well"
>>> k=['Well','That']
>>> [w for w in l.split() if w in k]

如何使用shell脚本执行此操作?

答案 3 :(得分:0)

这是一个想法:

line = "All's Well That Ends Well"
filter = "That Well"

print [word.lower() for word in line.split() if word.lower() in filter.split()]

最后一行称为list comprehension,非常“pythonic”。 split()使任何字符串成为单词列表,其中列表中的每个项目由单词之间的空格确定。我添加了lower(),以便返回小写的单词,忽略原始情况。