我偶然发现了这段代码,我试图用分隔符“;”解析文件 并将其保存到其他新文件中。但现在它将原始内容保存到新文件中而不分离。
cat $file | awk 'BEGIN {FS=";"}{ print > "final.txt"}END{ print "parsed now..."}'
但它给了我原始文件内容。我想,print
将打印由 awk 处理的文件的所有列。
有人可以帮帮我吗?
多谢
如果我理解正确,问题是您没有在“;”处获得输出 应该用“”代替(这是标准的OFS)?
如果这是问题,为什么不这样做
sed 's/;/ /g' $file
无论如何 - print
awk 中的 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
Print 将默认打印 $0 ,这是完整的行。所以无论你得到什么都是正确的。
我可以知道你到底需要什么吗?你需要删除分隔符吗?
第四列可以打印如下:
awk 'BEGIN {FS=";"}{ print $4 > "final.txt"}END{ print "parsed now..."}' $file