Den*_*uzé 1 regex perl awk sed tr
假设我有一个文件test.txt,包含:
$foobar$
$
foobar
$
$
foobar$
$foobar
$
$
foo
bar
$
$
foo
bar$
$foo
bar
$
Run Code Online (Sandbox Code Playgroud)
我希望每一对$...$都被替换\(...\),...可能包含新的线条.编辑:更确切地说,我希望以下替换:
\(foobar\)
\(
foobar
\)
\(
foobar\)
\(foobar
\)
\(
foo
bar
\)
\(
foo
bar\)
\(foo
bar
\)
Run Code Online (Sandbox Code Playgroud)
以下sed说明:
sed -e 's/\$\([^]]*\)\$/\\(\1\\)/g' test.txt
Run Code Online (Sandbox Code Playgroud)
只有在没有新线的情况下才能完成工作.
另一种可能性是使用两遍:
$为两个中的一个\($的\)但我不知道怎么说"两个中的一个".
使用perl单线程和触发器操作符:
perl -pe 's/\$/\\(/ .. s/\$/\\)/' test.txt
Run Code Online (Sandbox Code Playgroud)