有人能解释一下这个sed命令在这里做什么吗?
sed 's!^M$!!;s!\-!!g;s!\.!!g;s!\(..\)!\1:!g;s!:$!!'似乎替换/删除了一些字符..。但我想不出来..。这真的很复杂(我指的是所有的s ; / g M ^。及其他字符)
坦克斯
发布于 2016-01-23 18:49:36
您可以将其分成一系列替换:
s!^M$!!
s!\-!!g
s!\.!!g
s!\(..\)!\1:!g
s!:$!!每个模式都使用!作为分隔符,因此模式是s!match!replacement!。最后的g意味着它们中的一些是全局的,因此会发生尽可能多的事件,而不是每行只发生一次。
^与行的开头匹配,$与结束匹配,因此第一个匹配的是删除行中自己找到的任何M。
接下来的两个移除找到的所有.和-。.在它之前需要一个斜线,这样它就只能匹配一个文字.,而不是匹配任何字符。-在它之前不需要一个斜线,但它也不会造成任何伤害。
第四种方法是在每2个字符之后添加一个:,使用捕获组和反向引用。
希望你能根据我对第一个问题的解释,弄清楚最后一个是做什么的!
https://stackoverflow.com/questions/34967170
复制相似问题