如何使用命令行工具从文本行中过滤掉某些单词?
示例:
line 1: All's Well That Ends Well
filter: That Well
output: Well That Well
注意:过滤后仍会出现两次重复出现。
除了一系列GNU实用程序之外,我还可以使用Python脚本。
答案 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(),以便返回小写的单词,忽略原始情况。