在Ubuntu中用NULL替换空单元格

问题描述 投票:-3回答:2

我想替换||之间的空白单元格与NULL。我已经尝试使用命令sed和awk这样做,但是在输出文本中看不到任何变化。我在执行过程中做错了什么吗?

awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = NULL }; 1' 311-Public-Data-Extract-2011-clean.txt

这是txt文件的内容:

1100265887-101000386223||Unknown|Unknown|Unknown|Unknown|Unknown|Unknown|

这是我想要得到的:

1100265887-101000386223|NULL|Unknown|Unknown|Unknown|Unknown|Unknown|Unknown|
csv awk sed
2个回答
2
投票

您能不能尝试下面的操作(根据显示的示例编写。)>

awk '{gsub(/\|\|/,"|NULL|")} 1'  Input_file

编辑:根据Ed先生的评论,以防万一有多个空字段,以便处理这种情况。

awk 'BEGIN{FS=OFS="|"} {for(i=1;i<=NF;i++){if($i==""){$i="NULL"}}} 1' Input_file

1
投票

这里是一个更简单的sed命令。对于这个简单的任务,awk实在是太过分了。

© www.soinside.com 2019 - 2024. All rights reserved.