gpt4 book ai didi

tabs - 如何在 AWK 中指定 *one* 选项卡作为字段分隔符?

转载 作者:行者123 更新时间:2023-12-05 01:10:22 25 4
gpt4 key购买 nike

空白字段分隔符的默认值,例如使用 FS = "\t" 时的制表符, 在 AWK是一个或多个。因此,如果您想在某些列(不是最后一列)中读取带有空值的制表符分隔文件,它会跳过它们。例如:

1 "\t" 2 "\t" "" "\t" 4 "\t" 5
$3将引用 4 ,不是空值 ""即使显然有两个选项卡。

我应该怎么做才能将字段分隔符指定为一个选项卡,以便 $4将引用 4而不是 5 ?

最佳答案

 echo '1 "\t" 2 "\t" "" "\t" 4 "\t" 5' | awk -F"\t" '{print "$3="$3 , "$4="$4}'

输出
$3=" "" " $4=" 4 " 

因此,您可以删除原始字符串中的 dbl 引号,然后得到
echo '1\t2\t\t4\t5' | awk -F"\t" '{print "$3="$3 , "$4="$4}'

输出 2
$3= $4=4

你是对的,默认的 FS 是空格,需要注意的是空格和制表符彼此相邻,将被视为 1 个 FS 实例。所以要只使用“\t”作为你的 FS,你可以像上面那样作为 cmd 行参数,或者你可以在 FS 上包含一个显式重置,通常在 BEGIN 中完成块,比如
echo '1 "\t" 2 "\t" "" "\t" 4 "\t" 5' | awk 'BEGIN{FS="\t"}{print "$3="$3 , "$4="$4}'

IHTH

关于tabs - 如何在 AWK 中指定 *one* 选项卡作为字段分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com