0

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

例子:

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

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

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

4

4 回答 4

2

您可以像这样发送(管道)文本grep

echo "All's Well That Ends Well" | grep -o '\(That\|Well\)'
于 2012-06-11T18:39:01.950 回答
2

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

echo "All's Well That Ends Well" | grep -o '\(\bThat\b\|\bWell\b\)'
于 2012-06-11T18:44:20.203 回答
0
>>> l="All's Well That Ends Well"
>>> k=['Well','That']
>>> [w for w in l.split() if w in k]

我如何使用 shell 脚本来做到这一点?

于 2012-06-11T18:43:02.463 回答
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() 以便它以小写形式返回单词,而忽略原始大小写。

于 2012-06-11T18:46:28.240 回答