2017-06-14 79 views
1

我有一个要求,用awk替换中间的6位数字'9'在下面的16位数字字段。请让我知道解决方案,因为我现在开始awk如何使用awk替换数字值的子串

分隔符:在文件|

实际数据:

2006-07-27|0|DBT|||6657832345233037|Y 

在一个文件中的预期数据:

2006-07-27|0|DBT|||6657839999993037|Y 

回答

3

awk来救援!

UPDATE您必须设置OFS以保留分隔符。

awk 'BEGIN{FS=OFS="|"} {$6=substr($6,1,6) "999999" substr($6,13)}1' 
+0

真棒!解决方案工作得很好....谢谢你:) – Leo

+0

awk -F'|' 'BEGIN {OFS =“|”} {$ 6 = substr($ 6,1,6)“999999”substr($ 6,13)} 1' –

+1

是,thx,已更新。 – karakfa

0

只是为了好玩,这里是另一种选择:

awk -F'|' '$6 = gensub(/^(.{6}).{6}/,"\\1999999",1,$6)' OFS="|" 
相关问题