使用 sed 搜索、匹配并用值替换第一列

使用 sed 搜索、匹配并用值替换第一列

我想获得一些使用 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

相关内容