1. 程式人生 > 其它 >使用Linux命令快速檢視某一行

使用Linux命令快速檢視某一行

原創:打碼日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。

簡介

當年,我還是Linux菜鳥的時候,就在簡歷上寫著精通Linux命令了,而當面試官問我“如何快速檢視某個檔案的第200行,僅這一行”時,我的心裡是懵逼的。

當時面試官心裡估計在竊喜,從我敷衍的回答中,他應該已經完全瞭解到了我的Linux水平如何[-_-]

不過,不得不說,這是一道非常好的面試題,對於一些只知道cd ls cp rm基礎命令的人來說,完全回答不了,而對於真正熟悉Linux人來說,答案信手拈來,下面來看看。

1. 如果知道cat加-n可以輸出行號的話:

cat -n temp.log | grep -w '^\s*200'

是的,每行前面加個行號,然後grep過濾一下就出來了。

2. 如果稍微瞭解過sed命令的話:

cat temp.log | sed -n '200p' 

sed命令能直接用行號匹配,匹配到的行用p指令輸出就行了。

3. 如果稍微瞭解過awk命令的話:

cat temp.log | awk 'NR==200'

這個和sed命令類似,不過NR代表行號。

4. 如果你比較幸運,學過一點perl的話:

cat temp.log|perl -lne 'print $_ if $.==200'

和awk是類似的,不過語法不同罷了。

5. 如果瞭解head,tail,腦袋轉得再快一點的話:

cat temp.log | head -n 200 | tail -n1 

是的,先取前200行,再用tail取最後一行就可以了,這麼簡單咋當時想不到呢!

6. 如果知道cut,思路再轉個彎的話:

cat temp.log | cut -z -d $'\n' -f200 
cat temp.log | awk -F '\n' -v RS='\0' '{print $200}'

嗯,把整個檔案內容當成一條記錄,把換行符當成列分隔符,取第200列就好了嘛。

7. 如果你在想xargs行不行的話:

cat temp.log | xargs -d'\n' bash -c 'echo $200' -

和上面是類似的,不過這次使用xargs把所有行變成了bash命令的引數,然後列印第200個引數即可。

注:上面沒有詳細解釋各個命令的用法,如果想了解這些命令,可以看看我之前寫的兩篇文章。 
原來awk真是神器啊
Linux文字命令技巧(上)

總結

是的,使用Linux命令,實現一個功能,可以有很多種解法,它和普通的程式設計思維很不一樣,只要不把思考方式限定在程式設計實現上,漸漸地解法都會像靈感一樣,從你大腦中蹦出來。

往期內容

原來awk真是神器啊
Linux文字命令技巧(上)
Linux文字命令技巧(下)
mysql的timestamp會存在時區問題?
hex,base64,urlencode編碼方案對比
字元編碼解惑