我想知道是否有一个 Perl(或其他)单行代码将所有连字符 -
替换为 相同数量的 抑扬符 ^
,前提是连字符从行首开始。
示例输入:
Title 1
-------
Title two
---------
+--------+
|asciibox|
+--------+
输出应该是:
Title 1
^^^^^^^
Title two
^^^^^^^^^
+--------+
|asciibox|
+--------+
在 Perl 本身我可以运行这样的东西:
s!(-+)!"^" x length($1)!e;
但是有没有办法从命令行执行此操作?
最佳答案
是的,使用 \G
anchor 匹配字符串的开头或上一个匹配项之后的位置:
perl -pe 's/\G-/^/g'
另一种可以与 Perl 或 sed 一起使用的方法:测试和翻译
perl -pe 'y/-/^/ if /^-+$/'
或
sed '/^--*$/y/-/^/'
关于perl -pe one liner : Replace all matched characters with same number of a different character. 非全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100678/