如何使用命令行工具从一行文本中过滤掉一些单词?
例子:
line 1: All's Well That Ends Well
filter: That Well
output: Well That Well
注意:过滤后仍然出现两次重复出现。
除了一行 GNU 实用程序之外,我还可以使用 Python 脚本。
如何使用命令行工具从一行文本中过滤掉一些单词?
例子:
line 1: All's Well That Ends Well
filter: That Well
output: Well That Well
注意:过滤后仍然出现两次重复出现。
除了一行 GNU 实用程序之外,我还可以使用 Python 脚本。
您可以像这样发送(管道)文本grep
:
echo "All's Well That Ends Well" | grep -o '\(That\|Well\)'
添加\b
以匹配单词边界。较长的单词(例如Wellness
)将被拒绝。
echo "All's Well That Ends Well" | grep -o '\(\bThat\b\|\bWell\b\)'
>>> l="All's Well That Ends Well"
>>> k=['Well','That']
>>> [w for w in l.split() if w in k]
我如何使用 shell 脚本来做到这一点?
这是一个想法:
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() 以便它以小写形式返回单词,而忽略原始大小写。