regex - 使用 sed 从两个不同字符之后的 AND 之间的 URL 中删除一个字符串
问题描述
我有一个文本文件,其中包含用双引号括起来的 URL 列表:
"http://test.com/secure/test/12345/doc.pdf"
所以我试图将 URL 附加到文件协议,并删除 URL 末尾的文件名。预期输出为:
"file://12345"
在mac上,我试过了
sed -i '.bak' 's~http://test.com/secure/test/~file://~g' url.txt
上面的命令只附加了前面部分,
"file://12345/doc.pdf"
我不太确定如何匹配第一个"http://test.com/secure/test/
,然后如何匹配 URL 中的下一个正斜杠/doc.pdf"
,以删除文件名(各不相同)。
解决方案
sed
在确认文件对您有效后,您可以调整以下命令来修改您的文件:
echo '"http://test.com/secure/test/12345/doc.pdf"' | sed -E 's@"http://test.com/secure/test/([^/"]*)/.*"@"file://\1"@'
"file://12345"
说明:
([^/"]+)
将捕获12345
您的 URL 的一部分(您可能必须限制为更具体的类[0-9a-zA-Z]
而不是[^/"]
/.*"
将匹配/
URL 的其余部分
推荐阅读
- azure - Azure Cosmos DB 建议
- angular - 单击链接会触发“未捕获(承诺中):错误:未找到‘未定义’的 NgModule 元数据”
- github - Github 公共仓库登录要求
- python - 附加具有多列索引和重叠列名的 DataFrame
- php - 如何使用 functions.php 作为启用 WP-PostRatings 的手段?
- xaml - Microsoft.CognitiveServices.Speech.Core.dll 未找到异常
- asp.net-core - .net 核心中的 Urlhelper 和 IActionContextAccessor
- java - 找不到类型类 java.lang.String 的 PersistentEntity
- python - 从一个目录中读取多个图像并将它们转换为 .csv 文件
- python - 有关 polyfit 和 poly1d 功能如何工作的问题