切出一個字符串=「」在不同的列所以我行1000它看起來象下面這樣:如何用awk每行
A="10" B="20" C="20" A="10" B="20" C="20" A="10" C="20" D="20" C="10" D="20" A="20"
我要使出渾身C = 「X」,也可能需要在某個時刻找到A =「X」。以上是一個縮短的例子,但它可能很容易幾十列,它是遍佈各地。
我認爲awk會比cut更好,但還沒有完全想出拉出這些信息的最佳方式。
感謝
切出一個字符串=「」在不同的列所以我行1000它看起來象下面這樣:如何用awk每行
A="10" B="20" C="20" A="10" B="20" C="20" A="10" C="20" D="20" C="10" D="20" A="20"
我要使出渾身C = 「X」,也可能需要在某個時刻找到A =「X」。以上是一個縮短的例子,但它可能很容易幾十列,它是遍佈各地。
我認爲awk會比cut更好,但還沒有完全想出拉出這些信息的最佳方式。
感謝
awk '{s="";for (i=1;i<=NF;i++)if($i~/^(A=|C=)\"/)s=s?s FS $i:$i; print s}' file
A="10" C="20"
A="10" C="20"
A="10" C="20"
C="10" A="20"
我剛試過,效果很好。我對如何提取這種類型的數據有了更好的理解! – HungryFerret
好像grep
會做:
grep -o 'C="[0-9]*"' file
輸出:
C="20"
C="20"
C="20"
C="10"
你只是想起了我,我甚至沒有想到那條路。 – HungryFerret
下面是另一個awk
可能性。
awk '{
delete a
for(i=1; i<=NF; ++i)
a[substr($i, 1, 1)] = int(substr($i, 4))
print a["A"], a["C"]
}' file
這收集所有的信/值對,在由字母鍵的關聯數組存儲值作爲實際的整數(沒有引號)。這可以讓你以任何你想要的方式打印出來。例如,無論原始訂單如何(儘管原始訂單被遺忘),都可以按字母順序打印。
對於'C =「X」'示例,輸出應該是什麼樣子? – ooga
你能解釋爲什麼你認爲'awk'比'cut'更好嗎?你是否也在尋找其他的選擇?你能證明你到目前爲止所嘗試過的嗎?你是否至少試圖熟悉'awk'甚至是'cut'? – hek2mgl
我會好的C =「X」或只是「X」。 – HungryFerret