Unix shell 脚本,用于在文件中查找字符串,然后通过添加字符或数字进行追加

Unix shell script to find string in a file then append by adding characters or number

有人可以帮我在文件中的字符串中添加零吗?

例如:我有 test.dat,它包含如下内容:

1 FirstName LastName A +2015042113:00:00000285000FSCRD INV 0 2 FirstName LastName B +2015042220:00:00000331000SSESA INV 0

我想创建一个 shell 脚本来编辑文件中的一个字符串,方法是在字符串中间插入三 (3) 个零。

所以预期的输出将是:我将添加的三个零加粗如下。

01 FirstName LastName A +2015042113:00:00000000285000FSCRD INV 0

02 FirstName LastName B +2015042220:00:PM000000331000SSESA INV 0

可以使用;

awk -F : '{print ":"":"substr(,1,2)"000"substr(,3)}' test.dat

 sed -r -e 's/^.*:../&000/' test.dat

您可以将 sedregex 一起使用:

sed 's/\(:..:..\)/00/' test.dat 

它寻找模式 :..:..(点是任何字符,所以它寻找“冒号任何字符 ,任何字符,冒号,任何字符,任何字符") 并向其添加 3 个零

sed "s/\(+[0-9]\{10\}:[0-9]\{2\}:[A-Z0-9]\{2\}\)\([A-Z0-9]\{16\}\)/00/"

这个sed命令是匹配整个第五个字段,然后插入三个零。这会更健壮(与较短的 regex 相比),以防止替换该行的其他部分。

如果有第五个字段的规范,可以让regex更加强大。