Unix shell脚本在文件中查找字符串,然后通过添加字符或数字来附加

时间:2016-08-15 13:09:04

标签: bash shell unix solaris

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

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

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

我想通过在字符串的中间插入三(3)个零来创建一个shell脚本来编辑fie中的一个字符串。

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

01 FirstName LastName A +2015042113:00:00 000 000285000FSCRD INV 0

02 FirstName LastName B +2015042220:00:PM 000 000331000SSESA INV 0

3 个答案:

答案 0 :(得分:1)

您可以将sedregex

一起使用
sed 's/\(:..:..\)/\1000/' test.dat 

它查找模式:..:..(点是任何字符,因此它查找" 冒号任何字符任何char 冒号任何char 任何char ")并向其添加3个零

答案 1 :(得分:0)

你可以使用;

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

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

答案 2 :(得分:0)

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

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

如果存在第五个字段的规范,则可以使regex更强。