2014-07-16 25 views

回答

3

純殼,沒有多餘的處理:

{ read -r; read -r; program; } < inputfile.txt 

前兩個呼叫給每個read消耗輸入的從input file.txt一條線,以使得它們不被program看見。


您可以將其概括爲跳過第一個$n行輸入。

{ 
    while [ "$((i++))" -lt "$n" ]; do read -r; done 
    program 
} < inputfile.txt 

這變得稍微更可讀的與使用一些bash擴展:

{ while ((i++ < n)); do read -r; done; program; } < inputfile.txt 
+0

謝謝,簡單和最好的答案 – MOHAMED

3

您可以使用tail

tail -n +3 inputfile.txt | myprogram 

在bash,你也可以使用

myprogram < <(tail -n +3 inputfile.txt) 
+0

我必須使用' MOHAMED

+1

@MOHAMED:總是有解決範圍問題的方法。請具體詢問你需要什麼,所以我們可以給出一個全面的答案。 –

0

試試這個命令:sed -n '3,$p' inputfile.txt | myprogram

4

也許這會爲你(進程替換)工作:

program < <(sed -n '3,$p' inputfile.txt) 
+0

或「反向」:'sed'1,2d'文件' –

相關問題