有没有办法使用 sed 替换具有相同长度的其他内容(例如点、零等)的模式?
像这样:
maci:/ san$ echo "She sells sea shells by the sea shore" | sed 's/\(sh[a-z]*\)/../gI'
.. sells sea .. by the sea ..
(“I”需要较新版本的 sed 来忽略大小写)
这很简单:以“sh”开头的单词被双点(..)替换,但是我该如何制作
它是这样的:... sells sea ...... by the sea .....
任何想法?干杯!
我怀疑你不能以标准的方式做到这一点sed
,但是您可以使用 Perl 或其他具有更强大的正则表达式处理功能的东西来做到这一点。
$ echo "She sells sea shells by the sea shore" |
> perl -pe 's/(sh[a-z]*)/"." x length($1)/gei'
... sells sea ...... by the sea .....
$
The e
修饰符表示替换模式是可执行的 Perl 脚本;在这种情况下,它会重复该字符.
与匹配模式中的字符数一样多的次数。这g
修饰符在整行重复;这i
修饰符用于不区分大小写的匹配。这-p
Perl 的选项在指定的脚本中处理后打印每一行-e
选项 — 替代命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)