现在我有一个字符串 str="...AAA...",我想将其拆分为 3 个子字符串变量 sub1 sub2 sub3 AAA 是 sub2 并且是一个不会出现的独特模式在 sub1 和 sub3 中。所有其他字符都保存在 sub1 和 sub3 中。只有一种极端情况是,当 sub3 需要为空字符串时,AAA 可能会出现在末尾。我怎样才能做到这一点,也许使用 grep、sed 或 gawk?
您不需要
grep
、sed
或 awk
。只需使用 Shell 参数扩展 与 %
和 #
:
str="ABCAAAXYZ"
sub2="AAA"
sub1="${str%${sub2}*}"
sub3="${str#*${sub2}}"
printf '%s\n' "$sub1" "$sub2" "$sub3"
ABC
AAA
XYZ
这与
str="ABCAAA"
的作用相同。