有人可以解释这个sed 's!^M$!!;s!\-!!g;s!\.!!g;s!\(..\)!\1:!g;s!:$!!'
命令在这里做了什么吗?
s
似乎正在替换/删除一些角色...但我无法弄清楚......它真的很复杂(我的意思是所有这些;
/
{ {1}} g
M
^
。和其他字符)
感谢名单 问候
答案 0 :(得分:5)
您可以将其拆分为一系列替换:
s!^M$!!
s!\-!!g
s!\.!!g
s!\(..\)!\1:!g
s!:$!!
每个人都使用!
作为分隔符,因此模式为s!match!replacement!
。最后的g
意味着其中一些是全局的,所以会尽可能多次发生,而不是每行发生一次。
^
匹配行的开头,$
匹配结尾,因此第一个删除了一行中找到的所有M
。
接下来的两次删除找到的所有.
和-
。 .
需要一个斜杠,以便它只匹配文字.
而不是匹配任何字符。 -
之前不需要斜杠,但它也没有任何伤害。
第四个使用捕获组和反向引用,每2个字符后添加一个:
。
希望根据我对第一个的解释,你可以弄清楚最后一个做什么!