了解sed命令语法和sed命令

sir*_*red 2 bash sed

有人可以解释这个sed命令在这里做什么吗?

sed 's!^M$!!;s!\-!!g;s!\.!!g;s!\(..\)!\1:!g;s!:$!!'
Run Code Online (Sandbox Code Playgroud)

它似乎取代/删除了一些字符...但我无法弄清楚......它真的很复杂(我的意思是所有这些s ; / g M ^.和其他字符)

感谢

Tom*_*ech 5

您可以将其拆分为一系列替换:

s!^M$!!
s!\-!!g
s!\.!!g
s!\(..\)!\1:!g
s!:$!!
Run Code Online (Sandbox Code Playgroud)

每个都!用作分隔符,因此模式是s!match!replacement!.在g上月底表示,其中一些是全球性的,因此会发生很多次地,而不是只在每行一次.

^匹配行的开头并$匹配结束,因此第一个删除M行中找到的任何s.

接下来的两个删除所有.-被发现.在.这样它仅匹配一个文字之前需要一个斜杠.,而不是匹配任何字符.在-不需要前斜线,但它不会做任何伤害或者.

第四个:使用捕获组和后引用在每2个字符后添加一个.

希望根据我对第一个的解释,你可以弄清楚最后一个做了什么!