Mac OSX下使用sed批量移除每行指定字符串片段失败求助
解决方案
针对Mac OSX(BSD sed)环境,要移除每行中-it后跟随的随机字符段(直到第一个/为止),可以用以下方式实现:
单文件处理(输出结果到终端)
使用扩展正则表达式(语法更直观,推荐):
sed -E 's/-it[^/]+//' input.txt
若习惯用基本正则表达式,需转义+元字符:
sed 's/-it[^/]\+//' input.txt
批量原地修改文件
Mac的sed在使用-i(原地修改)选项时,必须指定备份后缀(传入空字符串表示不保留备份文件):
sed -i '' -E 's/-it[^/]+//' *.txt
将*.txt替换为你实际的已排序文件匹配模式即可。
正则逻辑说明
-it:精确匹配字面量字符串-it[^/]+:匹配一个或多个非斜杠字符,确保只删除-it到下一个/之间的随机内容,不会破坏后续路径部分
测试你的示例字符串:
arinare-naturale-sexy-e-p0rchissima-f-it63s1vg0/index.htmli
执行命令后会输出:
arinare-naturale-sexy-e-p0rchissima-f/index.htmli
关键差异提示
Mac OSX自带的是BSD版本sed,和Linux的GNUsed存在语法区别:
- 启用扩展正则需用
-E选项(GNUsed用-r) - 原地修改
-i必须指定备份后缀,不能直接写-i
内容的提问来源于stack exchange,提问作者Oscardot
相关产品推荐
相关产品推荐

