Linux sed模式命令

Linux sed模式命令,linux,bash,shell,sed,Linux,Bash,Shell,Sed,所以我在$1上应用了这个sed命令,它是一个文件 我想知道的是sed如何计算所有的斜杠和反斜杠 继承模式中的任何字符意味着什么 sed '/^\/\*/d/.*\*\//d' $1 据我所知 '/^ ....../d' 删除行开头的一些图案(考虑第二个d) -第一个d代表什么,点和/或/\(unescape字符)代表什么 有人能给我解释一下吗?这实际上是两个背靠背的sed命令: /^\/\*/d /.*\*\//d ^匹配行首,\/匹配文字正斜杠,\*匹配文字星号。(由于正斜杠和星号是“

所以我在$1上应用了这个sed命令,它是一个文件 我想知道的是sed如何计算所有的斜杠和反斜杠 继承模式中的任何字符意味着什么

sed '/^\/\*/d/.*\*\//d' $1
据我所知

'/^ ....../d' 
删除行开头的一些图案(考虑第二个d)

-第一个d代表什么,点和/或/\(unescape字符)代表什么


有人能给我解释一下吗?

这实际上是两个背靠背的sed命令:

/^\/\*/d
/.*\*\//d
^
匹配行首,
\/
匹配文字正斜杠,
\*
匹配文字星号。(由于正斜杠和星号是“元字符”,因此需要使用反斜杠对其进行转义,以实现字面上的匹配。)

*
匹配任何字符序列,
\*
再次匹配文字星号,
\/
再次匹配文字斜杠

把它们放在一起,这样做就是删除C风格的注释,但仅当它们出现在一行的开头时:

/* This will go away */This will stay

请阅读。祝你好运。我几乎看不到它会删除所有的/*..*/内联,如果/*..*/更改为//,我就只需要/^\/\/\.*/d了?如果注释扩展到多行(我将不得不使用某种分隔符或使用一些if?)如何?是的,您的示例将从
/
删除到行的末尾,但仅当它从行的开头开始时(因为您使用
^
锚定它)。我认为你不能用sed来处理多行评论;您需要一些有状态的东西,比如perl或awk。这帮助您变得很棒