只提取數字你好,我有以下的輸出:如何使用awk
replication complete (rid=969811 lid=969811)
或有時:
no change of listener transaction id for last 0 checks (rid=971489 lid=970863)
現在我想用awk從擺脫和蓋子得到的只是數字,以下作品只與第一個選項
|awk -F'[^0-9]*' '{print $2-$3}'
只提取數字你好,我有以下的輸出:如何使用awk
replication complete (rid=969811 lid=969811)
或有時:
no change of listener transaction id for last 0 checks (rid=971489 lid=970863)
現在我想用awk從擺脫和蓋子得到的只是數字,以下作品只與第一個選項
|awk -F'[^0-9]*' '{print $2-$3}'
$ echo "no change of listener transaction id for last 0 checks (nid=971491 lid=970876)" |
awk -F'[()]' '{gsub(/[^0-9 ]/,"",$2); print $2}'
971491 970876
$ echo "no change of listener transaction id for last 0 checks (nid=971491 lid=970876)" |
awk -F'[()= ]' '{print $(NF-3), $(NF-1)}'
971491 970876
$ echo "no change of listener transaction id for last 0 checks (nid=971491 lid=970876)" |
awk -F'[()= ]' '{for (i=1;i<=NF;i++) m[$i]=$(i+1); print m["nid"], m["lid"]}'
971491 970876
$ echo "no change of listener transaction id for last 0 checks (nid=971491 lid=970876)" |
awk '{gsub(/.*\(|[^0-9 ]+|\).*$/,"")}1'
971491 970876
等等,等等....右一爲你真的取決於你打算用文字來做些什麼。
嗯,我現在在你的問題中看到你可能想從另一個數字中減去一個數字,而不是像我想的那樣打印數字。以下是基於上述的一種方式:
$ echo "no change of listener transaction id for last 0 checks (nid=971491 lid70876)" |
awk -F'[()= ]' '{print $(NF-3) - $(NF-1)}'
615
作爲練習剩下的選擇!
另一種解決方案,這個工作只GNU-awk 4
.... Defining Fields by Content in GAWK
echo "no change of listener transaction id for last 0 checks (rid=971489 lid=970863)" |
gawk -vFPAT='[0-9]+' '{print $(NF-1), $NF}'
你,
971489 970863
echo "replication complete (rid=969811 lid=969811)" |
gawk -vFPAT='[0-9]+' '{print $(NF-1), $NF}'
你,
969811 969811
注:如果,你想要d因爲這樣的awk鄰減法
echo "replication complete (rid=969811 lid=969811)" |
gawk -vFPAT='[0-9]+' '{print $(NF-1)-$NF}'
你,
0
awk -F'=' '{print int($2)-int($3)}'
作品解析字符串。
你想打印(提取)這兩個數字作爲你的主題和文字說,或者你想打印從第一個數字減去第二個數字的結果,因爲你的腳本會做?請編輯您的問題以顯示EXACT期望的輸出。 –