Shell脚本用于查找可能的字符串序列

时间:2017-01-18 18:41:16

标签: bash shell unix sh

我有一个以下格式的文本文件:

Apple

A Ant

B Bat

B Ball

每个字符的定义数量可以是任意数字。

我正在编写一个shell脚本,它将接收像“A B”这样的输入。我期待的shell脚本的输出是可以创建的可能的字符串序列。

对于输入“A B”,输出将为:

Apple Bat

Apple Ball

Ant Bat

Ant Ball

我尝试了数组,它没有按预期工作。任何人都可以帮助解决一些关于如何解决这个问题的想法吗?

1 个答案:

答案 0 :(得分:0)

使用关联数组来完成此任务:

#!/usr/bin/env bash

first_letter=$1
second_letter=$2

declare -A words                  # declare associative array
while read -r alphabet word; do   # read ignores blank lines in input file
  words+=(["$word"]="$alphabet")  # key = word, value = alphabet
done < words.txt

for word1 in "${!words[@]}"; do
  alphabet1="${words[$word1]}"
  [[ $alphabet1 != $first_letter ]] && continue
  for word2 in "${!words[@]}"; do
    alphabet2="${words[$word2]}"
    [[ $alphabet2 != $second_letter ]] && continue
    printf "$word1 $word2\n"              # print matching word pairs
  done
done

A B作为参数传入的输出(包含您问题中的内容):

Apple Ball
Apple Bat
Ant Ball
Ant Bat

您可能需要参考这篇文章以获取关于关联数组的更多信息: Appending to a hash table in Bash