別のリストの単語で始まる(コレクションを除く)リストの単語を見つける

別のリストの単語で始まる(コレクションを除く)リストの単語を見つける

2つのリストがあります。

  • 最初一般的な単語が含まれています。
  • 第二任意の子音文字列(固定長)を含む行を含みます。

私はこれが必要です:

  • 子音文字列の1つで始まり、母音が除外された単語(aeiou)のみを含むリスト
  • 一致しない残りの子音文字列のリスト

これ:

  • 一致する単語の一種の子音文字列とキーと値のリスト(たとえば、fbr: foobar, foobarbazコマンドラインツールでより議論しやすい形式)

システムはCygwinで、好ましいシェルは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

関連情報