我有一个文件“测试”
以下是内容
235788@@@235788@@@20200724_103122@@@SUCCESS
235791@@@235791@@@20200724_105934@@@SUCCESS
235833@@@235833@@@20200724_130652@@@FAILURE
235842@@@235842@@@20200724_132721@@@FAILURE
235852@@@235852@@@20200724_134607@@@FAILURE
235791@@@235791@@@20200724_105934@@@SUCCESS
如果此文件的最后一行以235791开头,则在该行上将字符串“ SUCCESS”替换为“ FAILURE”。
预期产量
235788@@@235788@@@20200724_103122@@@SUCCESS
235791@@@235791@@@20200724_105934@@@SUCCESS
235833@@@235833@@@20200724_130652@@@FAILURE
235842@@@235842@@@20200724_132721@@@FAILURE
235852@@@235852@@@20200724_134607@@@FAILURE
235791@@@235791@@@20200724_105934@@@FAILURE
下面是示例代码
id = 235791
last_build_id = `tail -1 test | awk -F'@@@' '{print \$1}'`
if (id == last_build_id ){
sed -i '$s/SUCCESS/FAILURE/' test
}
我想避免这么多行,而是使用一个使用正则表达式组或任何其他简单方式的shell命令。
sed
在这里可能会更容易
$ sed -E '$s/(^235791@.*)SUCCESS$/\1FAILURE/' file
您可以添加-i
就地更新。
将id作为变量传递
$ id=235791; sed -E '$s/(^'$id'@.*)SUCCESS$/\1FAILURE/' file
您应该在"$id"
理想情况下用双引号括起来,但是如果您对其中的内容有把握,那您可能会迷失方向。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句