-1

我有多个 html 文件,我需要在字符串中替换空格并使字符串小写。(全部在linux中)

Exaple:
<html> ....
<a href="bla.com/CCC C C">ddd ddd ddd</a>
<a href="bla.com/CCC C">ddd ddd ddd</a>
...
</html>

Should result in:
<html> ....
<a href="bla.com/ccc_c_c">ddd ddd ddd</a>
<a href="bla.com/ccc_c">ddd ddd ddd</a>
...
</html>

页面上还有其他类似的链接,但它们不是 bla.com,它们是其他东西,所以如果使用常规 exp(bla.com 需要在那里)。CCC 部分不是静态的,可以是任何单词!

任何可以做到这一点的单行线?

4

1 回答 1

1

我需要替换一个空格并使字符串中的字符串小写

只需一个空格中断,那么这个衬里就可以做到:

sed -E 's/(bla.com\/)(\w*)\s*(.*?")/\1\L\2_\L\3/g' file

$ echo '<a href="bla.com/CCC C">ddd ddd ddd</a>' | sed -E 's/(bla.com\/)(\w*)\s*(.*?")/\1\L\2_\L\3/g'
<a href="bla.com/ccc_c">ddd ddd ddd</a>

解释:

s/            # Substitution
(bla.com\/)   # Match the domain (captured)
(\w*)         # Match the following word (captured) 
\s*           # Followed by whitespace
(.*?")        # Capture everything left upto the closing "
/             # Replace with 
\1            # The captured domain
\L\2          # Lowercase first captured word
_             # Replace the whitespace with an underscore 
\L\3          # Lowercase rest of the match
/g            # Global

如果像您的示例中那样可能有多个空格,我很难想出一个衬里。

于 2012-12-04T18:22:29.020 回答