最小值我有這樣的矩陣:AWK做一個簡單的減法,找到那
{{1,4},{6,8}}
,我想從喜歡的第一個值。減去第二個值:4-1和8-6 和然後,比較器都和展示什麼是來自最低限度的值,在這種情況下:8-6 = 2
所有這一切都在終端
最小值我有這樣的矩陣:AWK做一個簡單的減法,找到那
{{1,4},{6,8}}
,我想從喜歡的第一個值。減去第二個值:4-1和8-6 和然後,比較器都和展示什麼是來自最低限度的值,在這種情況下:8-6 = 2
所有這一切都在終端
使用AWK你似乎有點困惑,你是否要減去第一個從第二個或第二個從第一個。另外,關於你的數據是在一個文件還是一個變量。然而,這應該讓你開始...
如果我們更換任何瘋狂的括號或逗號與空格:
echo "{{1,4},{6,8}}" | awk '{gsub(/[{},]/," "); print}'
1 4 6 8
現在我們可以通過$4
訪問領域$1
,做你想要什麼:
echo "{{1,4},{6,8}}" | awk '{gsub(/[{},]/," "); x=$2-$1; y=$4-$3; if(x<y)print x; else print y}'
2
這樣,也許更優雅,替代通過@ 3161993的意見建議,你可以設置字段分隔符是一個或多個開放或c失去括號或逗號,像這樣:
awk -F '[,{}]+' '{x=$3-$2; y=$5-$4; if(x<y) print x; else print y}' <<< "{{1,4},{6,8}}"
2
而且,作爲@EdMorton好心指出的那樣,它可以更簡潔一點與三元操作是這樣的:
awk -F '[,{}]+' '{x=$3-$2; y=$5-$4; print (x<y ? x : y)}' <<< "{{1,4},{6,8}}"
嗯...你需要一個星號後拿起$ 3,然後你沒有得到4美元。 –
呀,用'-F '[{}] +''你可以訪問'$ 2,$ 3,$ 4,$ 5',你可以,如果你想++ –
@ 3161993我已經在增加,並計入您添加 - 感謝分享你的見解。 –
歡迎堆棧溢出,你可以請示例輸入和預期的輸出。 – RavinderSingh13
矩陣的形式是什麼?它在一個文件中?或者在一個bash變量中?它實際上是否包含所有大括號和逗號以及垃圾? –
你爲什麼用AWK如AWK是更加專業化和非常高效的數據處理一行行如,但不限於,CSV文件目前尚不清楚。也許你可以給你的問題提供更多的背景。 – Setop