查找列表中以另一个列表中的单词开头(不包括元音)的单词

查找列表中以另一个列表中的单词开头(不包括元音)的单词

我有两个清单:

  • 第一包含常规单词
  • 第二个包含带有随机辅音字符串的行(固定长度)

我需要这个:

  • 仅包含以辅音字符串之一开头且元音被排除的单词的列表 (aeiou)
  • 剩余的、不匹配的辅音字符串列表

和这个:

  • 某种辅音字符串和匹配单词的键值列表(例如,fbr: foobar, foobarbaz或任何易于与命令行工具进一步争论的格式)

系统是 Cygwin,首选 shell 是 Bash。

答案1

zsh

#! /bin/zsh -

words=(foobar foobarbaz STRING)
strings=(fbr STRN xyz)

vowels=aeiouAEIOU # adjust as needed
typeset -A matches=()
for word ($words) {
  word_without_vowels=${word//[$vowels]}
  for string ($strings)
    if [[ $word_without_vowels = $string* ]] matches[$string]+=" $word"
}
for string ($strings)
  if (( $+matches[$string] )) print -r -- "$string:$matches[$string]"

给出:

fbr: foobar foobarbaz
STRN: STRING

相关内容