行計算我有一個ASCII文件結構如下:AWK - 跨越一個ASCII文件
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,3,0,0,0,0.04,0,0,990,0
1,0,3,0,0,0,0.12,0,0,3760,0
1,0,3,0,0,0,0.21,0,0,5372,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
.
.
.
的零點代表「隨機」數我不需要照顧。
凡塔3等於3(總是3的塊)我有 與列7和10執行一些計算:
我需要計算(0.04 * 990)+(0.12 * 3760 )+(0.21 * 5372) 並將結果插入所有三行的第5列。 第10列中的值在下一個「三個塊」中將有所不同。
以前我用awk做了很多ascii文件編輯,所以如果可能的話我也想在這裏使用它。
我的主要問題是在找到第3列= 3之後訪問接下來的兩行,然後繼續搜索兩行。
結果應該是這樣的:
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,3,0,1618.92,0,0.04,0,0,990,0
1,0,3,0,1618.92,0,0.12,0,0,3760,0
1,0,3,0,1618.92,0,0.21,0,0,5372,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
1,0,4,0,0,0,0,0,0,0,0
.
.
.
我希望我能夠說明問題,如果不只是問,我會澄清!
我想:
awk -F"," '$3 == "3"' in.dat > out.dat
,並把它與
awk -v "n=line numer" -v "s=string to insert" '(NR==n) { print s } 1' input-file
結合,但我的主要問題是,我不知道如何來的第一行後訪問場用它來計算公式。
我真的需要使用的公式更加複雜,但我只在這裏發佈了一個簡單的示例,因爲將它適應於更復雜的解決方案沒有問題。
那麼你是怎麼做的這麼遠嗎?你卡在哪裏?而且,因爲它是一個固定值,爲什麼不直接添加它,而不是每次都進行計算? – fedorqui 2014-12-03 14:02:13
我試過了:awk -F「,」'$ 3 ==「3」'in.dat> out.dat並將它與awk -v「n =行數」-v「s =要插入的字符串」'( NR == n){print s} 1'輸入文件,但我的主要問題是我不知道如何訪問第一行後面的字段並將其用於計算公式中。 – MacA 2014-12-03 16:33:12
我真的需要使用的公式更加複雜,但是我只在這裏發佈了一個簡單的示例,因爲將它應用於更復雜的解決方案是沒有問題的 – MacA 2014-12-03 16:38:11