【发布时间】:2019-04-22 18:04:59
【问题描述】:
所以我需要匹配给定单词列表中的字符串。 例如,如果我给出这样的输入
$ sh match_the_pattern.sh -i aei words.txt
它应该按顺序匹配字符“a”“e”和“i”。
字符串中的字母必须按该顺序出现在单词中,但其他字符可能出现在其间。
注意:字符串可能会改变,字典可能会改变。
我的方法:
- 读取输入
- 扫描文件名
- SED 或 GREP 组合来匹配字符串
- 输出
我不知道什么?第三部分。
while [[ $# -gt 0 ]]; do
case $1 in
-i)
arg=$2
egrep "*[$argument]*" $name
shift ;;
esac
shift
done
什么没用
a+.*e+.*i+.*
sh match_the_pattern.sh -i aeiou words.txt
adventitious
adventitiousness
sacrilegious
abstemious
sacrilegiousness
如果你注意到,a,e,i,o,u 一个接一个。这就是我想要的。 我们要匹配的字符串可能会改变。
【问题讨论】:
-
grep 'a.*e.*i'? -
egrep "a+.*e+.*i+.*" words.txt确实匹配这些词。您发现问题出在哪里? -
原因是,你只是拿 aei 和匹配它。我已经明确提到 aei 只是一个样本,它是一个随参数变化的变量。它可以是 xyz、abc、euo 或任何东西。所以我们的 grep 不应该是很难编码的。它必须有参数或可变的东西。我希望这会有所帮助。
-
这个问题基本上是“如何将一个字符串变成相同的字符串,每个字符之间插入
.*”?