我需要 sed 方面的帮助
两个命令
我正在尝试任何两个或多个大写字母之间有点。
A [公元前] XYZ
A [公元前。] X.Y.Z.
我最接近的是
echo "abcd Abcd ABcd ABCd ABCD" | sed -e "s/[A-Z]\{2\}/&./g"
abcd Abcd AB.cd AB.Cd AB.CD.
如果更容易的话,另一个单独的命令可以在任何大写字母之间添加一个点,后面不跟小写字母。
抗体 [A] D6 胎儿生长激素 X”
抗体 [A。] D.6。 F.G.H. X.”
我最接近的
echo "abcd Abcd ABcd ABCd ABCD" | sed -e "s/[A-Z][^a-z]/&./g"
abcd Abcd AB.cd AB.Cd AB.CD.
标准
sed
正则表达式没有复杂的前瞻功能,因此不够强大,无法一次性完成此操作。它需要某种循环。
两个或多个大写字母(彼此相邻)之间有点:
$ echo 'A [BC] XYZ' | sed '
:a
s/\([A-Z]\)\([A-Z]\)/\1.\2/g
ta
'
A [B.C] X.Y.Z
$
在后面不跟小写字母的任何大写字母之间添加一个点:
$ echo 'Ab [A] D6 FGH X"Z' | sed '
:a
s/\([A-Z]\)\([^\na-z]\|$\)/\1\n\2/g
ta
y/\n/./
'
Ab [A.] D.6 F.G.H. X."Z.
$