我的文件如下:
BRRD P 14 1 812 7 32.82
RESD P 14 1 812 7 32.97
AZEP P 14 1112053 13.87
AZHS P 14 1112053 14.18
我需要插入零,所以它看起来像:
BRRD P 1401081207 32.82
RESD P 1401081207 32.97
AZEP P 1401112053 13.87
AZHS P 1401112053 14.18
因此,第3列应始终是由10个字符组成的字符串。问题是空字符中缺少零。我想在第3列中用空格替换空格字符。
我尝试cat temp8 | sed 's/^ /0 /g' | sed 's/ $/ 0/g' | sed 's/ / 0/g' > temp9
,但最终看起来像:
BRRD P 1312211336 058.52
RESD P 1312211336 058.72
0 00
AZCT P 131222 055 036.99
AZFS P 131222 055 00 .0
我还考虑在某个行位置插入零,但第3列中的空字符是随机的。
有什么想法?谢谢!
答案 0 :(得分:2)
使用awk
即可:
awk '{val=$3; for (i=4; i<NF; i++) val = val "0" $i; print $1, $2, val, $NF}' file
BRRD P 1401081207 32.82
RESD P 1401081207 32.97
AZEP P 1401112053 13.87
AZHS P 1401112053 14.18
答案 1 :(得分:1)
Gnu awk和FIELDWIDTHS
:
$ awk 'BEGIN{OFS=""; FIELDWIDTHS="7 10 6"} {gsub(/ /,"0",$2)} 1' file
BRRD P 1401081207 32.82
RESD P 1401081207 32.97
AZEP P 1401112053 13.87
AZHS P 1401112053 14.18
<--7--><---10---><--6->
如上所述设置FIELDWIDTHS
,并将第二个字段中的空格替换为0
s。 OFS
必须为空。
答案 2 :(得分:-1)
检查以下代码。
${varName//Pattern/Replacement}
语法
call vendor/bin/dep