【发布时间】:2019-05-05 19:16:42
【问题描述】:
我想使用 bash 脚本生成给定字符串的 N 个字母排列
我已经成功编写了一个代码来查找给定单词的排列。但是,我似乎无法得到最多 N 个字母的排列。 注意:我必须避免使用 sed 和 awk 命令。 这是我尝试过的:
#!/bin/bash
x=$1
counter=0
ARRAY=()
function permutate {
if [ "${#1}" = 1 ]; then
echo "${2}${1}"
ARRAY+=("${2}${1}")
else
for i in $(seq 0 $((${#1}-1)) ); do
pre="${2}${1:$i:1}"
seg1="${1:0:$i}"
seg2="${1:$((i+1))}"
seg="${seg1}${seg2}"
permutate "$seg" "$pre"
done
fi
}
permutate $x
例如,如果我有一个单词“JACK”并且我想要 3 个字母排列,那么它应该给出: 江淮汽车 开甲 杰克 ETC... 但我似乎无法深究。
【问题讨论】:
-
sed 与这样的任务完全无关,但整个事情应该在 awk 中完成,否则您将花费数小时等待 shell 脚本返回一个相当长的单词- 你为什么要避免 awk?
-
我想知道今天早些时候问stackoverflow.com/questions/55991544/…(关于尝试解决相同问题时遇到的不同问题)的同学是不是?