-2

我偶然发现了这段代码,我试图用分隔符“;”解析文件 并将其保存到其他新文件中。但现在它将原始内容保存到新文件中而不分离。

cat $file | awk 'BEGIN {FS=";"}{ print  > "final.txt"}END{ print "parsed now..."}'

但它给了我原始文件内容。我想,print将打印由 awk 处理的文件的所有列。

有人可以帮帮我吗?

多谢

4

2 回答 2

0

如果我理解正确,问题是您没有在“;”处获得输出 应该用“”代替(这是标准的OFS)?
如果这是问题,为什么不这样做

sed 's/;/ /g' $file

无论如何 - printawk 中的 AFAIK 意味着输入行在print $0哪里。$0如果该行中没有明确更改的字段$0则根本不会更新。我的解决方法通常是进行伪更新$1=$1以强制更新$0。也许有一种“更清洁”的方式......

cat $file | awk 'BEGIN {FS=";"}{$1=$1;print  > "final.txt"}END{ print "parsed now..."}'

编辑:

awk -F";" '{print $4}' $file >final.txt
于 2012-08-02T11:48:11.280 回答
0

Print 将默认打印 $0 ,这是完整的行。所以无论你得到什么都是正确的。

我可以知道你到底需要什么吗?你需要删除分隔符吗?

第四列可以打印如下:

awk 'BEGIN {FS=";"}{ print $4 > "final.txt"}END{ print "parsed now..."}' $file
于 2012-08-02T11:52:43.857 回答