空白字段分隔符的默认值,例如使用时的制表符FS = "\t"
,inAWK
是一个或多个。因此,如果您想在制表符分隔的文件中读取某些列(除了最后一列)中的空值,它会跳过它们。例如:
1 "\t" 2 "\t" "" "\t" 4 "\t" 5
$3
将指4
, 不是 null""
即使显然有两个选项卡。
我应该怎么做才能将字段分隔符指定为仅一个选项卡,以便$4
引用4
而不是5
?
echo '1 "\t" 2 "\t" "" "\t" 4 "\t" 5' | awk -F"\t" '{print "$3="$3 , "$4="$4}'
输出
$3=" "" " $4=" 4 "
因此,您可以删除原始字符串中的 dbl-quotes,并获得
echo '1\t2\t\t4\t5' | awk -F"\t" '{print "$3="$3 , "$4="$4}'
输出2
$3= $4=4
你是对的,默认的 FS 是空白,需要注意的是空格和制表符彼此相邻,将有资格作为 1 个 FS 实例。因此,要仅使用“\t”作为您的 FS,您可以像上面那样作为 cmd-line 参数执行,或者您可以在 FS 上包含一个显式重置,通常在一个BEGIN
块中完成,例如
echo '1 "\t" 2 "\t" "" "\t" 4 "\t" 5' | awk 'BEGIN{FS="\t"}{print "$3="$3 , "$4="$4}'
IHTH