awk,设置FS="&引用;似乎不起作用,有什么需要注意的吗?
好的,我正试图写一个简单的awk来清除一些csv文件中的逗号 下面是几行示例数据awk,设置FS="&引用;似乎不起作用,有什么需要注意的吗?,awk,Awk,好的,我正试图写一个简单的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,,,,
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,,,,,,,
$$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,,,,,,,
$$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是我应该设置的变量。我还尝试了hte-F标志,这也没有帮助
这里有什么明显的遗漏吗?在
awk
中,$0
不是第一列,而是整行。$1
是第一列,第二列是$2
,依此类推。因此,您可能想要更改此项:
{print $0,$4,$7,$11,$16,$19 }
为此:
{print $1,$5,$8,$12,$17,$20 }
啊哈,我知道这是一个非常简单的问题。谢谢:)+1格式良好的问题,带有示例输入和输出。祝你好运