我有一個大文件(超過1000行),我需要按照一些條件進行排序。 文件包含這樣行:按照數字排序文件後,從特定的字bash
bla bla bla took 536ms. {"uniqueId":"ygfwyagf","duration":536} []
bla took 531ms. {"uniqueId":"wdagweg","duration":531} []
[2017-07-26 11:34:04.346533] wgwqegwqeg took 47ms. {qwgwqgce":"local","duration":47} []
[2017-07-2 [bla] Aocal took 41ms. {"uniagwrqgwqrwqg ation":41} []
[2017-07-26 1wergwg local took 39ms. {"uniqueId"wetgwgweqg gg}
需要通過數字後對它們進行排序與awk的「花」 我可以通過對它們進行排序:awk '{for(i=1;i<=NF;i++) if ($i=="took") print $(i+1)}' test | sort -h
但對於輸出,我從全行的需要,剛需排序不丟失任何東西。不幸的是,這個mss不在同一列(很容易)。
如果最好比本地bash解決方案(更快/更簡單/更正確),那麼需要調用另一個解釋器(perl,python等)的解決方案。
使用'{}'按鈕的代碼格式的塊文字內容(即實際的代碼或數據)。你可以使用這個塊上面的標籤'<! - language:none - >來告訴站點不要嘗試語法高亮數據。 –
順便說一句,請*不要*標記一種語言,只是因爲你猜測它可能有幫助。這是惹惱很多人的好方法(訂閱標籤是因爲他們想回答有關該語言的問題)。 –
您的代碼缺失的部分是:刪除「ms」。從下一個單詞;並打印該行:'awk'{for(i = 1; i <= NF; i ++){if($ i ==「took」){n = $(i + 1); sub(/ ms \ ./,「」,n);打印n,$ 0;接下來}}}'文件' - 然後按其他人指出的那樣排序並刪除第一個單詞。 –