我有多个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部分不是静态的,可以是任何单词!
任何可以做到这一点的单线?
答案 0 :(得分:1)
我需要替换 a 空格并在字符串
中使字符串小写
对于只有单空格的间隔,那么这一个班轮将会这样做:
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
如果在你的例子中可能有多个空格,我很难找到一个班轮。