Bash 当字符串在文件中匹配时,如何使用sed修改行的最后2位

Bash 当字符串在文件中匹配时,如何使用sed修改行的最后2位,bash,shell,sed,Bash,Shell,Sed,我有一个文件“a.txt”,其中包含以下内容: K8A2-19C204-BA109691 ML_18.10.4-109691 我如何在文件中搜索字符串,比如说“ML_”,如果它与该行的最后2位匹配,那么使用bash脚本中的“sed”命令修改该行的最后2位,比如91到00 你能帮忙吗? 提前感谢下面的awk可能会对您有所帮助 awk '/ML_/ && substr($0,length($0)-1)~/[0-9]+/{print substr($0,1,length($0)-

我有一个文件“a.txt”,其中包含以下内容:

K8A2-19C204-BA109691  
ML_18.10.4-109691
我如何在文件中搜索字符串,比如说“ML_”,如果它与该行的最后2位匹配,那么使用bash脚本中的“sed”命令修改该行的最后2位,比如91到00

你能帮忙吗?

提前感谢

下面的
awk
可能会对您有所帮助

awk '/ML_/ && substr($0,length($0)-1)~/[0-9]+/{print substr($0,1,length($0)-1) "00";next} 1'   Input_file
如果要将输出保存到同一个输入文件中,请将
>temp\u文件和&mv temp\u文件Input\u文件
附加到上述代码中

解决方案二:

如果要将输出保存到同一输入文件中,请使用上述
sed
命令中的
sed-i
选项

说明:

/ML
:在每行中搜索字符串
ML
,如果在当前行中存在,则执行以下操作

s/
s
代表替换,执行替换操作

[0-9][0-9]$/
[0-9][0-9]$
表示应更改当前行最后的任何2位
$

00/
:在当前行中使用
00
更改两位以上的数字,其中包含字符串
ML


Input\u文件
:在这里提到输入文件。

sed-E'/ML\u/s/[0-9]{2}$/00/'文件
Thankyu anubhava它起作用了:)你能解释一下“[0-9]{2}$”的作用吗?谢谢advance@Deepak请参阅并感谢您提供的信息。如果我使用sed命令获得解决方案,它将非常有用。@Deepak,请查看我的第二个解决方案,并让我知道这是否对您有帮助?@Deepak,您的欢迎,很高兴它有帮助,请查看此URL。您能解释一下“[0-9][0-9]$”的作用吗。我想玩一下“sed”,您能提供的任何有帮助的链接吗?@Deepak,我已经用我的解释更新了我的答案,同样对于
sed
你可以通过手册页、基本书籍阅读它,你也可以继续学习(这里有很多与之相关的东西)。
sed '/ML_/s/[0-9][0-9]$/00/'   Input_file