复杂字符串替换

时间:2013-10-21 21:09:21

标签: perl

我有一个html文件,其中包含如下所示的行:

base_url = '',

有时单引号之间可能没有任何内容;有时可能会有一个网址。如何编写使用基本URL填充字符串的单行perl命令?

我试过这个,但它不起作用:

perl -pe 's/(base_url = \')(.+)/https:\/\/www\.example\.com(\',)/eg' -i index.htm

由于

2 个答案:

答案 0 :(得分:3)

试试这个:

s|base_url = '.*?',|base_url = 'https://www.example.com/',|g;

答案 1 :(得分:-1)

你问了一个单行,但没说你正在使用哪个外壳。这很重要。我会假设bash。这是一种方式:

perl -p -e 's#(base_url *= *)'"'"'.*'"'"'#$1'"'"'https://www.example.com/'"'"'#'

正如您所看到的,困难的部分是在单引号内转义单引号。可能有一种更简单的方法,但我不知道那是什么。

有些人似乎不喜欢单引号约定中的单引号转义。我喜欢它,因为你不必担心任何进一步的shell逃逸。这是双引号的答案:

perl -p -e "s#(base_url *= *)'.*'#\$1'https://www.example.com/'#"