You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量处理URL列表:用Unix工具仅删除查询参数或片段部分

解决方案

功能1:批量删除URL中的查询参数部分

使用sed工具,通过正则匹配并删除?到最近的#或行尾的内容,命令如下:

sed 's/\?[^#]*//' input_urls.txt > output_no_query.txt

或者通过管道处理:

cat input_urls.txt | sed 's/\?[^#]*//' > output_no_query.txt

正则说明:

  • \?:匹配URL中的查询参数起始符?(转义是因为?在正则中有特殊含义)
  • [^#]*:匹配任意数量的非#字符,直到遇到#或行尾
  • 整个替换操作会把?及其后的查询参数(如果没有#则到行尾)替换为空,保留#及之后的片段部分。

功能2:批量删除URL中的片段部分

同样使用sed,匹配并删除#到最近的?或行尾的内容,命令如下:

sed 's/#[^?]*//' input_urls.txt > output_no_fragment.txt

或者管道处理:

cat input_urls.txt | sed 's/#[^?]*//' > output_no_fragment.txt

正则说明:

  • #:匹配URL中的片段起始符#
  • [^?]*:匹配任意数量的非?字符,直到遇到?或行尾
  • 替换操作会把#及其后的片段内容(如果没有?则到行尾)替换为空,保留?及之后的查询参数部分。

验证测试

针对你提供的测试URL列表:
原始URL:

http://test0.com/a.exe
http://test1.com/a.exe?p=123
http://test2.com/a.exe#fragment
http://test3.com/a.exe?p=123#fragment
http://test3.com/a.exe#fragment?p=123
  • 功能1执行后结果完全符合预期:
    http://test0.com/a.exe
    http://test1.com/a.exe
    http://test2.com/a.exe#fragment
    http://test3.com/a.exe#fragment
    http://test3.com/a.exe#fragment
    
  • 功能2执行后结果也完全符合预期:
    http://test0.com/a.exe
    http://test1.com/a.exe?p=123
    http://test2.com/a.exe
    http://test3.com/a.exe?p=123
    http://test3.com/a.exe?p=123
    

优势说明

sed是Unix/Linux系统的标准工具,采用流式处理模式,不需要加载整个文件到内存,处理上万条甚至更多条目时效率极高,完全满足你的管道处理需求,无需编写C程序。

内容的提问来源于stack exchange,提问作者ralf9000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:42:42