好,使用${//}
一种全新的方式。
它完全是自动,它发现哪个是第一个字符,哪个是最后一个。
有了这个设定,它可以在前面选择跑步和在后面跑步。
当然,您需要编辑该程序以选择您需要发送到文件,打印或其他任何部分的程序。我希望你能做那份工作。
这似乎与任何字符串(甚至重复字符)的工作:
#!/bin/bash
a=(aaaccbbaabbbb aaabbbbaaaa abababbbb bbbaaabbb aaaaaa aaabbbbaaaa)
for resString in "${a[@]}"; do
echo
echo "String :$resString:"
l="$((2+${#resString}))"
frontchar=${resString:0:1} ; printf "%s%-${l}s\n" "Frontchar" ":$frontchar:"
backchar=${resString:0-1:1} ; printf "%s%${l}s\n" "Backchar " ":$backchar:"
head="${resString/%[^$frontchar]*}"; printf "%s%-${l}s\n" "head " ":$head:"
tail="${resString/#*[^$backchar]}" ; printf "%s%${l}s\n" "tail " ":$tail:"
preffix="${resString%$tail}" ; printf "%s%-${l}s\n" "preffix " ":$preffix:"
suffix="${resString#$head}" ; printf "%s%${l}s\n" "suffix " ":$suffix:"
echo "Using the head/suffix value: $head -- $suffix"
echo "Using the preffix/tail value: $preffix -- $tail"
done
运行它,你就会得到:
String :aaabbbbaaaa:
Frontchar:a:
Backchar :a:
head :aaa:
tail :aaaa:
preffix :aaabbbb:
suffix :bbbbaaaa:
Using the head/suffix value: aaa -- bbbbaaaa
Using the preffix/tail value: aaabbbb -- aaaa
String :aaaccbbaabbbb:
Frontchar:a:
Backchar :b:
head :aaa:
tail :bbbb:
preffix :aaaccbbaa:
suffix :ccbbaabbbb:
Using the head/suffix value: aaa -- ccbbaabbbb
Using the preffix/tail value: aaaccbbaa -- bbbb
String :abababbbb:
Frontchar:a:
Backchar :b:
head :a:
tail :bbbb:
preffix :ababa:
suffix :bababbbb:
Using the head/suffix value: a -- bababbbb
Using the preffix/tail value: ababa -- bbbb
String :aaaaaa:
Frontchar:a:
Backchar :a:
head :aaaaaa:
tail :aaaaaa:
preffix ::
suffix ::
Using the head/suffix value: aaaaaa --
Using the preffix/tail value: -- aaaaaa
执行剥离,然后用结果剥夺自行关闭的前最初的变量,你会得到你在第一步中被剥离的位。 –
@EtanReisner这是一个很好的主意,我经历了这么多小时的编程之后永远都不会教。非常感谢! –
尝试'resString =〜。*(b +)$; resString = $ {BASH_REMATCH [1]}' – Gene