sed:如何在两个斜杠后删除字符串中的所有内容/?
我有一行代码sed:如何在两个斜杠后删除字符串中的所有内容/?,sed,Sed,我有一行代码 require_once(PATH_ROOT).'/calls/inumber.php'); //this is a comment<br> 但这会删除(PATH.ROOT)之后的所有内容。'/ 我想删除注释,而不是路径。Ir不在上面的示例中,但我如何排除SED,而不是在http://之后删除,因为还有两个。 编辑:好的,任务是删除所有以至少两个斜杠开头的单行注释。跟在后面的字母/数字/符号不重要,用零代替它。唯一的例外是http://应该跳过它。示例和结果: $a
require_once(PATH_ROOT).'/calls/inumber.php'); //this is a comment<br>
但这会删除(PATH.ROOT)之后的所有内容。'/我想删除注释,而不是路径。Ir不在上面的示例中,但我如何排除SED,而不是在http://之后删除,因为还有两个。
编辑:好的,任务是删除所有以至少两个斜杠开头的单行注释。跟在后面的字母/数字/符号不重要,用零代替它。唯一的例外是http://应该跳过它。示例和结果:
$a=5//第一条评论
$a=5 $b=10;//第二条评论
$b=10 $c=15;//*&/$%§$%&/&第三条评论
$c=15 /////////////////////////////
应该是空字符串 /*测试注释*/
/*测试注释*/>无更改,因为没有两个斜杠
摘要:应该删除//之后的所有内容(包括两个//),除了http://您可以使用量词的贪婪性质始终只删除最后一个出现的内容
$ cat ip.txt
require_once(PATH_ROOT).'/calls/inumber.php'); //this is a comment<br>
http://foo/123 //commenting stuff
a//b/c/d 1//23/4/5 //commented
$ sed 's|\(.*\)//.*|\1|' ip.txt
require_once(PATH_ROOT).'/calls/inumber.php');
http://foo/123
a//b/c/d 1//23/4/5
$cat ip.txt
需要一次(路径根)。'/calls/inumber.php')//这是一条评论
http://foo/123 //评论材料
a//b/c/d 1//23/4/5//
$sed的|\(.*)/.\1 |'ip.txt
需要一次(路径根)。'/calls/inumber.php');
http://foo/123
a//b/c/d 1//23/4/5
允许,这有助于避免必须转义sed
/
与[/]
相同,这意味着它匹配单个[/]
/
将捕获组用于最后一组\(.*\)/.
之前的行部分,以便您可以使用/
将其放回替换部分\1
://
,但在两个斜杠之后删除所有内容:
sed 's|\([^:]\)//.*$|\1|'
它匹配任何非:
(保存该字符)的字符,后跟/
,以及行尾的任何字符,只放回第一个非:
字符
s
搜索/
然后搜索任何非斜杠的内容[^/]
零次或多次*
然后搜索行的结尾$
,并将其替换为零
如果要在注释之前匹配并删除任何空白,可以使用空白字符类\s
sed 's|\s*//[^/]*$||'
请注意,在注释中不能有斜杠,因为斜杠将匹配URL作为注释,除非您识别并排除URL
如果您想保留
/
(因为您说“删除所有内容…在//”之后),您可以将它们放回:
sed 's|//[^/]*$|//|'
注意:若要删除所有PHP注释,请按照以下答案进行操作@Xen2050您是正确的,注释中没有答案。这是什么语言,其中URL(带//)和
///code>和////*&/$%%§$%&/&
的“注释”有效?在PHP注释中以///开头。不管接下来是什么//
还是url:
如果斜杠在引号内怎么办?@noobee你知道,像这样的PHP注释以?>
结尾,注释也可以以
或/*
开头,它们太复杂了,用一个小的sed搜索无法识别(特别是考虑到你可以在有效的PHP中引用//
)。你真的只想删除所有的PHP注释吗?好的,这会删除像“//这是一条注释”->,但不会删除像“///我是一条长注释”或像“/////我是一条长注释”这样的注释
你能用SED来做吗?我建议你编辑这个问题来添加所有可能的案例以及完整的预期输出..目前的问题并不能解释这些场景..谢谢提示。我编辑了我的问题。我希望我解释得更好一点--我编辑了上面的问题。你能显示我的SED命令来删除e吗在//包括//?THX之后进行翻边
sed 's|\s*//[^/]*$||'
sed 's|//[^/]*$|//|'