shell 如何在一个句子中找到一个或多个数字,用bash脚本?

vzgqcmou  于 2023-06-24  发布在  Shell
关注(0)|答案(1)|浏览(167)

我想在文本文件中更改这样的句子:

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 ',它不工作。

h7appiyu

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

相关问题