我想在文本文件中更改这样的句子:
Punto 185-tarjet 12 Punto 18-tarjet 2 Punto 1996-tarjet 132
适用范围:
TARGET_0 TARGET_1 TARGET_2
我尝试了这个代码:
$file | sed 's/Punto [0-9][0-9][0-9]-tarjet [0-9] /\n\TARGET_ /g'
但问题是,有时有一个或多个数字后,'Punto '或'-tarjet ',它不工作。
h7appiyu1#
我认为使用 sed 不是一个好的选择,因为它不能执行交互式操作。为了解决数字位数的问题,你可以在正则表达式中添加/+/(一个或多个)匹配表达式:
sed 's/Punto [0-9]\+-tarjet [0-9]\+/TARGET_/g' file
如果你想增加值,我建议你使用 awk。你可以这样做:
awk '{gsub("Punto [0-9]+-tarjet [0-9]+","TARGET_"NR,$0);print}' file
1条答案
按热度按时间h7appiyu1#
我认为使用 sed 不是一个好的选择,因为它不能执行交互式操作。
为了解决数字位数的问题,你可以在正则表达式中添加/+/(一个或多个)匹配表达式:
如果你想增加值,我建议你使用 awk。你可以这样做: