了解sed命令语法和sed命令

时间:2016-01-23 18:32:00

标签: bash sed

有人可以解释这个sed 's!^M$!!;s!\-!!g;s!\.!!g;s!\(..\)!\1:!g;s!:$!!' 命令在这里做了什么吗?

s

似乎正在替换/删除一些角色...但我无法弄清楚......它真的很复杂(我的意思是所有这些; / { {1}} g M ^。和其他字符)

感谢名单 问候

1 个答案:

答案 0 :(得分:5)

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

s!^M$!!
s!\-!!g
s!\.!!g
s!\(..\)!\1:!g
s!:$!!

每个人都使用!作为分隔符,因此模式为s!match!replacement!。最后的g意味着其中一些是全局的,所以会尽可能多次发生,而不是每行发生一次。

^匹配行的开头,$匹配结尾,因此第一个删除了一行中找到的所有M

接下来的两次删除找到的所有.-.需要一个斜杠,以便它只匹配文字.而不是匹配任何字符-之前不需要斜杠,但它也没有任何伤害。

第四个使用捕获组和反向引用,每2个字符后添加一个:

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