2013-11-28 36 views
1

我有一個大文件的數據。每一行都是單個記錄。聽起來像是sed的工作。sed單行地址似乎要經過整個文件

我想檢查幾行數據,一次一個,但它們是帶有base64編碼值的json。檢查第2行,我運行:

sed -n 2p hugeFile | json 'key' | base64 --decode 

這工作正常,除了sed似乎繼續通過該文件。

我在這裏使用sed不正確,還是真的在通過每個文件,檢查每一行以查看它是否是第2行?

回答

3

您可以將多個命令與花括號組合起來,並執行q命令立即退出。

sed -n '2{p;q;}' hugeFile 

它的工作原理是這樣的,因爲你可能有多個命令,或者一個地址不只是一個行號。 sed不會優化只有一個命令並且是行號範圍的特殊情況。

+0

這有助於在這種情況下。但假設他想在一個巨大的文件中間打印一行,怎麼能防止[tag:sed]逐行處理?我認爲這是不可能的。這可以通過[tag:awk]解決嗎? – pfnuesel

+0

它將如何在文件中間到達該行而不逐行處理?文本文件沒有可以讓你直接進入特定行號的索引,你必須按順序讀取並計算換行符。 – Barmar

+0

我突然意識到我知道多麼小 - 我假設np會告訴我n行是什麼,而不是n是地址,p是打印命令。那麼我假設,'2 {p; q;}'在第2行說'打印行,然後退出'。 – Squidly