必须由用户输入
如果
word=pages
和
character=%
然后首先,我希望输出
%pages
p%ages
pa%ges
pag%es
page%s
pages%
其次,用这样的字符替换单词
%ages
p%ges
pa%es
pag%s
page%
有没有办法用bash做到这一点?
我想使用这些组合在SQL数据库中进行搜索。
答案 0 :(得分:3)
没有特别简单的方法可以做到这一点。我建议:
str=pages
wc=%
for ((i=0; i<=${#str}; i++)); do
echo "${str:0:i}$wc${str:i}"
done
for ((i=1; i<=${#str}; i++)); do
echo "${str:0:i-1}$wc${str:i}"
done
通过使用参数子串扩展和适当的参数完成所有操作。语法${str:x:y}
从位置y
开始输出长度为x
的子字符串。在第一个循环中,i
是角色在之前放置$wc
的位置。在第二个循环中,i
是替换的字符位置。
答案 1 :(得分:0)
只是改变了chepner的答案:
printf
本身完成的。str=pages
wc=%
for ((i=0; i<=${#str}; i++)); do
printf "%.${i}s%s%s\n" "${str}" "$wc" "${str:i}"
done
for ((i=0,j=1; i<${#str}; i++,j=i+1)); do
printf "%.${i}s%s%s\n" "${str}" "$wc" "${str:j}"
done