gpt4 book ai didi

awk,设置 FS =","似乎不起作用,有什么我应该知道的注意事项吗?

转载 作者:行者123 更新时间:2023-12-04 22:43:10 26 4
gpt4 key购买 nike

好的,所以我正在尝试编写一个简单的 awk 来清除我拥有的一些 csv 文件中的一些逗号。

这里是几行示例数据

  PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011  10:09:14 PM,,,,,5,,,4,,
PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,
PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,,7,,,5,,
PRD,,,,PEWPRV100D,,,EWPRVU191D,,,,12/31/2011 10:09:40 PM,,,,,6,,,5,,

作为简单的第一步,我想执行此操作(我最终想做的事情更复杂,但这是我需要做的第一件事,我什至无法做到这一点 :( )

   PRD,PEWPRV100D,EWPRVU457D,12/31/2011  10:09:14 PM,5,4,
PRD,PEWPRV100D,EWPRVU250D,12/31/2011 10:09:23 PM,67,69,
PRD,PEWREF100D,EWREFU045D,12/31/2011 10:09:40 PM,7,5,
PRD,PEWPRV100D,EWPRVU191D,12/31/2011 10:09:40 PM,6,5,

这是我第一次尝试 awk 脚本

  #!/bin/awk 
BEGIN{FS=",";}
{print $0,$4,$7,$11,$16,$19 }
END{print "DONE"}

产生

  PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011  10:09:14 PM,,,,,5,,,4,,,,,,,
PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,,,,,,
PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,,7,,,5,,,,,,,
PRD,,,,PEWPRV100D,,,EWPRVU191D,,,,12/31/2011 10:09:40 PM,,,,,6,,,5,,,,,,,

我试过一个更有说服力的脚本:

  #!/bin/awk 
BEGIN{FS=",";}
{printf("$$%s$$", $0) }
END{print "DONE"}

产生

 $$PRD,,,,PEWPRV100D,,,EWPRVU457D,,,,12/31/2011  10:09:14 PM,,,,,5,,,4,,$$
$$PRD,,,,PEWPRV100D,,,EWPRVU250D,,,,12/31/2011 10:09:23 PM,,,,,67,,,69,,$$
$$PRD,,,,PEWREF100D,,,EWREFU045D,,,,12/31/2011 10:09:40 PM,,,,,7,,,5,,$$
$$PRD,,,,PEWPRV100D,,,EWPRVU191D,,,,12/31/2011 10:09:40 PM,,,,,6,,,5,,$$

显示(我认为)FS=","没有将分隔符设置为逗号,因为整行被视为一列。我也尝试过许多不同形式的那条线,似乎没有什么不同。 awk 实现的手册页说 FS 是我应该设置的 var。我也试过 hte -F 标志,这也没有帮助。

我在这里明显遗漏了什么吗?

最佳答案

awk 中,$0 不是第一列 — 它是整行。 $1 是第一列,第二列是$2,依此类推。因此,您可能想要更改此设置:

{print $0,$4,$7,$11,$16,$19 }

为此:

{print $1,$5,$8,$12,$17,$20 }

关于awk,设置 FS =","似乎不起作用,有什么我应该知道的注意事项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502650/

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