0

この方法でファイルからデータを読み取るプログラムがあります

root@root# myprogram < inputfile.txt

ここで、プログラムがファイルの先頭からではなく、3 行目から入力ファイルを読み取るようにします。

私は使用する必要があります< inputfile.txt。変数のスコープの問題により、パイプで呼び出すことができません

Linuxでそれを行う方法はありますか?

4

4 に答える 4

3

純粋なシェル、余分なプロセスはありません:

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

それぞれの最初の 2 つの呼び出しは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
于 2014-07-16T18:44:52.993 に答える
3

使用できますtail

tail -n +3 inputfile.txt | myprogram

bashでは、使用することもできます

myprogram < <(tail -n +3 inputfile.txt)
于 2014-07-16T13:17:27.813 に答える
0

このコマンドを試してください:sed -n '3,$p' inputfile.txt | myprogram

于 2014-07-16T13:19:48.023 に答える