awk:将列值设置为' 0'仅当值为NULL时

时间:2016-11-23 10:53:44

标签: awk

在空格分隔文件fic.txt中,如果最后一个值为'',则将其设置为' 0'。

示例:

'A' 'B' 'C' '' 'E' '' |
'X' 'O' 'Y' 'T' 'W' '1' |

'A' 'B' 'C' '' 'E' '0' |
'X' 'O' 'Y' 'T' 'W' '1' |

我试过了:

awk '$6="\x27"0"\x27"' fic.txt - >要将第6列的所有值设置为' 0'。它有效。

但仍有问题要设置为' 0'只有第6栏是''

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

function handler(e){
  alert(e.target.value);
}

我建议您阅读awk指南,例如thisthis,以便了解awk。

已更新:感谢@Kent和@EdMorton的发言。

答案 1 :(得分:0)

sed "s/'' |/'0' |/" fil
'A' 'B' 'C' '' 'E' '0' |
'X' 'O' 'Y' 'T' 'W' '1' |

根据文件的结构,所有行都以管道“|”结尾。简单的sed搜索和替换将完成任务。要直接更改输入文件,请使用-i-i.bak标记sed

答案 2 :(得分:0)

在awk中使用sub将“''' \47替换为”最后一列“$6中的'0' {{1} }}:

$ awk '{sub(/\47\47/, "\47" "0" "\47", $6)} 1' bar
'A' 'B' 'C' '' 'E' '0' |
'X' 'O' 'Y' 'T' 'W' '1' |