我想知道是否有一个Perl(或其他)单行代码将替换-具有相同数量的抑扬符的所有连字符^,前提是连字符从行的开头开始.
输入示例:
Title 1
-------
Title two
---------
+--------+
|asciibox|
+--------+
Run Code Online (Sandbox Code Playgroud)
输出应该是:
Title 1
^^^^^^^
Title two
^^^^^^^^^
+--------+
|asciibox|
+--------+
Run Code Online (Sandbox Code Playgroud)
在Perl本身我可以运行这样的东西:
s!(-+)!"^" x length($1)!e;
Run Code Online (Sandbox Code Playgroud)
但有没有办法从命令行执行此操作?
是的,使用\G匹配字符串开头的锚点或上一个匹配后的位置:
perl -pe 's/\G-/^/g'
Run Code Online (Sandbox Code Playgroud)
您可以使用Perl或sed的另一种方式:测试和翻译
perl -pe 'y/-/^/ if /^-+$/'
Run Code Online (Sandbox Code Playgroud)
要么
sed '/^--*$/y/-/^/'
Run Code Online (Sandbox Code Playgroud)