如何使用sed反向引用提取行中的公司编号与名称
用sed反向引用实现仅保留公司编号和名称
没问题!咱们把这个需求用sed反向引用的方式实现,核心思路就是先精准捕获你想要保留的内容,再用反向引用把它作为整行输出,比原来的替换方式更灵活可控~
核心命令写法
假设你的每行格式是「数字编号 公司名称: 其他冗余内容」,我们分两种正则语法场景给出命令:
1. sed基础正则(兼容所有sed版本)
sed 's/\([0-9]* .*:\).*/\1/' filename.txt
拆解一下各部分的作用:
\([0-9]* .*:\):这是第一个捕获组(sed基础正则里括号要加反斜杠转义),专门抓你要保留的「编号+公司名称+冒号」部分.*:匹配冒号后面的所有冗余内容,确保全部被替换掉\1:反向引用第一个捕获组的内容,也就是把整行替换成我们捕获到的编号和名称
2. sed扩展正则(更简洁,现代系统默认支持)
加-r参数后可以不用转义括号,写起来更清爽:
sed -r 's/([0-9]* .*:).*/\1/' filename.txt
额外调整:如果不需要保留末尾的冒号
要是你只想留编号和公司名称,去掉冒号,只需要把捕获组的范围调整到冒号之前就行:
# 基础正则版 sed 's/\([0-9]* .*\):.*/\1/' filename.txt # 扩展正则版 sed -r 's/([0-9]* .*):.*/\1/' filename.txt
举个实际例子
假设你的filename.txt内容是:
123 云帆科技有限公司: 杭州市西湖区科技园 135xxxxxxx
456 悦享商贸股份公司: 广州市天河区商圈 136xxxxxxx
用不带冒号的命令处理后,输出就是:
123 云帆科技有限公司 456 悦享商贸股份公司
内容的提问来源于stack exchange,提问作者Rashad
相关产品推荐
相关产品推荐

