sed - sed:如何在两个斜杠后删除字符串中的所有内容//?
问题描述
我有一行代码
require_once(PATH_ROOT).'/calls/inumber.php'); //this is a comment<br>
我想在 // 之后使用 SED 删除所有内容。我的第一次尝试是
sed -i 's/[//].*//' file;
但这会删除(PATH.ROOT)之后的所有内容。'/
我想删除评论,而不是PATH。Ir 不在上面的示例中,但是我怎样才能排除 SED,而不是在 http:// 之后删除,因为也有两个 //。
编辑:好的,任务是删除所有以至少两个斜杠开头的单行评论。后面跟什么字母/数字/符号无关紧要,什么都没有。唯一的例外是应该跳过的 http(s)://。示例和结果:
$a=5; //第一条评论
$a=5;
$b=10; ////// 第二条评论
$b=10;
$c=15; /// /*&/$%§$%&/& 第三条评论
$c=15;
////////////////////////////////
应该是空字符串
/*测试注释*/
/*测试注释*/ --> 没有变化,因为没有两个斜杠
摘要: // 之后的所有内容都应删除(包括两个 //),但 http(s):// 除外
解决方案
您可以使用量词的贪婪特性始终只删除最后一次出现
$ 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
sed
允许使用不同的分隔符,这有助于避免转义//
[//]
与 相同[/]
,表示匹配单个/
\(.*\)//.*
对最后一组之前的部分行使用捕获组,//
以便您可以使用将其放回替换部分\1
推荐阅读
- matrix - 找出循环的 CSR x CSR 矩阵乘法
- python-3.x - pyModbusTCP 每秒失败一次功能
- swift - SwiftUI onTapGesture interact with caller only
- angular - 在浏览器中打开 devtools 之前,传单地图未完全渲染 - 角度版本 10 中面临的问题
- python - 来自 gs 云客户端 MaxRetryError 或 WRONG_VERSION_NUMBER 的 python ssl 错误
- javascript - 导出我自己的 Array 原型方法并将其用于不同的文件
- c# - 当收件箱为空时,C# mailkit 显示错误
- python - 用漂亮的汤刮奇怪的桌子结构
- java - Android 无法创建 APK 文件
- php - 最新的 Cookie Laravel 上的“反序列化():61 字节偏移量 0 处出错”