当我有以下描述时,我想更改文件的第四列。我找不到如何解决它。当字符串1-8出现时,我想用01-08替换它,但只能用管道分隔的4列。
SBMM01|CAM|22|01-08|NAP|VL|OPEN|1
CCSM01|CAM||1-8|NAP|CR|CLOSED|1
EZEM01|CAM|19|01-08|SPL|CC|OPEN|5
SPTD01|CAM|29|25-32|CDO|VG|OPEN|1
NRFL01|||1-8|NAP|CR|CLOSED|5
|||1-8|NAP|CR|CLOSED|5
通过
SBMM01|CAM|22|01-08|NAP|VL|OPEN|1
CCSM01|CAM||01-08|NAP|CR|CLOSED|1
EZEM01|CAM|19|01-08|SPL|CC|OPEN|5
SPTD01|CAM|29|25-32|CDO|VG|OPEN|1
NRFL01|||01-08|NAP|CR|CLOSED|5
|||01-08|NAP|CR|CLOSED|5
如何在Unix中使用sed或awk更改它?
答案 0 :(得分:1)
仅更改指定值
$ awk 'BEGIN{FS=OFS="|"} $4=="1-8"{$4="01-08"}1' file
你可以更普遍地格式化打印数字零填充。
答案 1 :(得分:0)
使用sed
sed -E 's/((.*|){3})(1-8)(.*)/\101-08\4/' infile