我想替换||之间的空白单元格与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|
您能不能尝试下面的操作(根据显示的示例编写。)>
awk '{gsub(/\|\|/,"|NULL|")} 1' Input_file
编辑:根据Ed先生的评论,以防万一有多个空字段,以便处理这种情况。
awk 'BEGIN{FS=OFS="|"} {for(i=1;i<=NF;i++){if($i==""){$i="NULL"}}} 1' Input_file
这里是一个更简单的sed
命令。对于这个简单的任务,awk
实在是太过分了。