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