我有一个文件,其中包含近20列。 我需要更新第7列,我需要在其中添加8个零
例如:tmp.txt
756 S#017925 5608 R88 X3GU0C LIC 200 00000000000
756 S#017925 5608 R88 M3GURA LIC 200 00000000000
第7列(更大胆的一个)我需要向它添加8个零,即" 00000000200"
预期产出:
756 S#017925 5608 R88 X3GU0C LIC 00000000200 00000000000
我尝试使用awk命令
awk -F' ' '{print "00000000"$7}' tmp.txt > tmp1.txt
但它正在返回:
00000000200
00000000200
答案 0 :(得分:4)
您可以直接执行此操作:
$ awk '{$7="0000000"$7}1' file
756 S#017925 5608 R88 X3GU0C LIC 0000000200 00000000000
756 S#017925 5608 R88 M3GURA LIC 0000000200 00000000000
它以与您相同的方式设置第7个字段。然后,使用1
打印整行。
如果您的号码8
恰好是按时变量的,那么将printf
与%0XXi
一起使用以使变量包含XX
位数会很方便(将会是XX - length_number
)领先0
的数量。要将值存储在变量中,我们使用sprintf
。 Thanks to triplee for the idea!
$ awk '{ $7 = sprintf("%011i", $7) } 1' file
756 S#017925 5608 R88 X3GU0C LIC 00000000200 00000000000
756 S#017925 5608 R88 M3GURA LIC 00000000200 00000000000
你的尝试出了什么问题?
awk -F' ' '{print "00000000"$7}' tmp.txt > tmp1.txt
print "00000000"$7
你刚刚打印第7个字段。使用1
使awk执行默认操作:{print $0}
,这意味着它会打印整行。-F' '
,因为它是默认值。