我在這段代碼上磕磕絆絆,我試圖通過分隔符來解析文件「;」並將其保存到其他新文件中。但現在它將原始內容保存到新文件中而不會分開。需要了解shell awk代碼
cat $file | awk 'BEGIN {FS=";"}{ print > "final.txt"}END{ print "parsed now..."}'
但它給我的原始文件內容。我想,print
將打印由awk處理的文件的所有列。
有人能幫我嗎?
非常感謝
我在這段代碼上磕磕絆絆,我試圖通過分隔符來解析文件「;」並將其保存到其他新文件中。但現在它將原始內容保存到新文件中而不會分開。需要了解shell awk代碼
cat $file | awk 'BEGIN {FS=";"}{ print > "final.txt"}END{ print "parsed now..."}'
但它給我的原始文件內容。我想,print
將打印由awk處理的文件的所有列。
有人能幫我嗎?
非常感謝
如果我理解你的權利,問題是,你不從哪裏得到輸出「;」應該用「」(這是標準的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
打印默認會打印$ 0,這是整條生產線。 所以無論你得到的是正確的。
我可以知道你確實需要嗎? 你是否需要拆卸分離器?
第4列可以打印以下:
awk 'BEGIN {FS=";"}{ print $4 > "final.txt"}END{ print "parsed now..."}' $file
謝謝,我真正需要的是我有一個包含一些信息的大文件,並且在每50行中有一個;我想將整個文件解析爲粒子,在這種情況下,列將理解awk的邏輯。 – doniyor 2012-08-02 12:03:40
還是不明白究竟你在找for.Make你的問題,如果能夠更加清晰與輸入和輸出的例子。 – Vijay 2012-08-02 12:13:20