在bash中搜索子字符串匹配的行的最有效方法是什么?
我有一个带噪声的名字列表和一个干净的名字列表,我确信干净的名字是带噪声名字的精确子串 假设我们有一个带噪波的名称,例如var?goldenfo,我想从一个文本文件cleannames中输出,如下所示在bash中搜索子字符串匹配的行的最有效方法是什么?,bash,Bash,我有一个带噪声的名字列表和一个干净的名字列表,我确信干净的名字是带噪声名字的精确子串 假设我们有一个带噪波的名称,例如var?goldenfo,我想从一个文本文件cleannames中输出,如下所示 golden blue red 金色的 我已经尝试过使用grep来创建新的名称,但这似乎是不够的 试试看: grep -Fof cleannames.txt text.txt 如果您需要其他内容,只需编辑您的问题并添加更多详细信息: 比如说: 在全方位上阻止它。魟魟魟 雷拉姆是戈登尼希尔。我们坐
golden
blue
red
金色的
我已经尝试过使用grep来创建新的名称,但这似乎是不够的 试试看:
grep -Fof cleannames.txt text.txt
如果您需要其他内容,只需编辑您的问题并添加更多详细信息:
比如说:
在全方位上阻止它。魟魟魟
雷拉姆是戈登尼希尔。我们坐得很低。苦瓜
呕吐。不带权贵的小酒馆。
铜离子是一种分子物质。奥迪奥
奥迪奥·奎斯(odio quis)就是埃利根迪·埃塞(eligendi esse)的奎斯。在id中的自然建筑
多洛勒姆·埃文尼特。Modi错误多洛伦·沃卢帕斯·乌尔雷德拉姆aut。溶质
鹿肉。Illum maximegolden perferendis Incident qui
消费习惯。产期为一个月
将打印
golden
golden
red
golden
golden
和
echo 'var?goldenfoo' | grep -Fof cleannames.txt
将打印
golden
golden
red
golden
golden
或
因此,您可以使用任何进程替换来代替cleannames.txt,也可以使用任何重定向来代替text.txt。任何组合都有效。您可以使用mapfile在数组中保留干净的名称: 然后将其调用为:
srch 'var?goldenfoo'
golden
srch 'foobar?bluebox'
blue
如果你想比grep搜索更快,你应该给出
试试看 名称不存储在文件中,它们是一个变量。cleannames是一个文件,但name var?Goldenfo不是。
srch() { for i in "${ary[@]}"; do [[ $1 == *"$i"* ]] && echo "$i"; done; }
srch 'var?goldenfoo'
golden
srch 'foobar?bluebox'
blue