请告诉我如何实施sed:
在行中的每个字符后放置一个特定的字符,如果有空格,则在其位置,但如果该行中有这样的字符,则忽略它(不要重复它)。因此,所有字符都应通过一个与所需字符交替出现:
Foo bar, 38-popugaev. > F.o.o.b.a.r.,.3.8.-.p.o.p.u.g.a.e.v.Foo bar, 38-popugaev. > F-o-o-b-a-r-,-3-8-p-o-p-u-g-a-e-v-.-相同,但在最后一个字符之后不应有此字符或任何标点符号:
Foo bar, 38-popugaev. > F.o.o.b.a.r.,.3.8.-.p.o.p.u.g.a.e.vFoo bar, 38-popugaev. > F-o-o-b-a-r-,-3-8-p-o-p-u-g-a-e-v用大写字母或小写字母替换整行(作为选项,反之亦然),同时忽略行本身的大小写:
Foo bar, 38-popugaev. > FoO bAr, 38-PoPuGaEv.Foo bar, 38-popugaev. > fOo BaR, 38-pOpUgAeV.相同,但同时,行中的每个单词都必须以特定大小写开头,忽略所有行的严格顺序,有利于每个单词的顺序(第一个选项 - 每个单词必须以大写字母开头,然后是交替,第二个选项 - 用小写字母然后交替):
Foo bar, 38-popugaev. > FoO BaR, 38-PoPuGaEv.Foo bar, 38-popugaev. > fOo bAr, 38-pOpUgAeV.
每次都可以作为单独的脚本运行sed -f script.sed
谢谢 )
你可以这样做,例如:
输出例如:
这个话题比较老了,但我也会参与,第3点:
echo "Foo bar, 38-popugaev" | sed -r 's/([а-Яa-Z]{0,1}[^a-Zа-Я]{0,1})([а-Яa-Z]{0,1}[^a-Zа-Я]{0,1})/\U\1\L\2/g'echo "Foo bar, 38-popugaev" | sed -r 's/([a-Za-Z]{0,1}[^a-Za-Z]{0,1})([a-Za-Z]{0,1}[^a- Za-Z]{0,1})/\L\1\U\2/g'
第四段与第三段的区别仅在于例外中的一个空格:
echo "Foo bar, 38-popugaev" | sed -r 's/([а-Яa-Z]{0,1}[^a-Zа-Я ]{0,1})([а-Яa-Z]{0,1}[^a-Zа-Я ]{0,1})/\U\1\L\2/g'echo "Foo bar, 38-popugaev" | sed -r 's/([а-Яa-Z]{0,1}[^a-Zа-Я ]{0,1})([а-Яa-Z]{0,1}[^ a-Zа-Я]{0,1})/\L\1\U\2/g'