关于正则表达式:bash – 如何从bash脚本中将换行符传递给perl?

bash - How to pass a line feed to perl from within a bash script?

本问题已经有最佳答案,请猛点这里访问。

我正在尝试替换所有数字序列,后跟换行符和字母a。 这些数字序列位于名为test.txt的文件中。 bash脚本command.sh用于执行任务(见下文)。

的test.txt

1
2
3
4
00
a1
b2
a

command.sh

1
2
3
4
5
6
#!/bin/bash

MY_VAR="\d+
a"


grep -P"^.+$" test.txt | perl -pe"s/$MY_VAR/D/";

当我调用command.sh文件时,我看到的是:

1
2
3
4
5
$ ./command
00
a1
b2
a

但是,我期待这个输出:

1
2
3
$ ./command
D1
bD

我错过了什么?


你甚至不需要grep,因为它只是匹配.+,只需使用perl-0777选项(slurp模式)来匹配不同的行:

1
2
3
4
5
6
#!/bin/bash

MY_VAR="\d+
a"


perl -0777pe"s/$MY_VAR/D/g" test.txt

输出:

1
2
D1
bD