我想获得一些使用 sed 的建议,关于如何在第一列中替换与 value2 匹配的 value1:
value1 = 9999
value2 = 02a-ResetFlag.sh
Data File
----------------------------------
0500 * * 1 ( 02-StartFix.sh)
1850 * * 1 ( 02a-ResetFlag.sh)
2000 * * 1 ( 03-StopFix.sh)
2005 * * 1 ( 04-DssEOD.sh)
Expected output:
-----------------------------------
0500 * * 1 ( 02-StartFix.sh)
9999 * * 1 ( 02a-ResetFlag.sh)
2000 * * 1 ( 03-StopFix.sh)
2005 * * 1 ( 04-DssEOD.sh)
提前致谢。
答案1
如果文件的内容data
是
0500 * * 1 ( 02-StartFix.sh)
1850 * * 1 ( 02a-ResetFlag.sh)
2000 * * 1 ( 03-StopFix.sh)
2005 * * 1 ( 04-DssEOD.sh)
然后
sed -i -r '/02a-ResetFlag.sh/{s/^([0-9]+)(.*)$/9999\2/g}' data
将修改文件data
为
0500 * * 1 ( 02-StartFix.sh)
9999 * * 1 ( 02a-ResetFlag.sh)
2000 * * 1 ( 03-StopFix.sh)
2005 * * 1 ( 04-DssEOD.sh)
测试于GNU sed version 4.2.1
答案2
假设搜索模式位于行尾($
是行尾标记)并且替换字符串位于文件开头:
sed '/02a-ResetFlag.sh)$/ s/^1850/9999/' data-file