例えば
ファイルa.txtには次のコンテキストがあります
aaa
bbb
ccc
ddd
eee
この目標を達成できるスクリプトは何ですか?
script.sh a.txt 2 4
出力:
bbb
ccc
ddd
2 と 4 は指定された行番号です。
これに使用できますawk:
awk 'NR>=2 && NR<=4' file
一般に、
awk -v beginning=$first -v end=$last 'NR>=beginning && NR<=end' $file
したがって、それは読み取りの問題で$fileあり$first、$lastスクリプト内にあります。
doubleDown コメント(ありがとう!) に基づいて、次のようにすることもできます。
awk 'NR==2, NR==4' file
より一般的に:
awk -v beginning=$first -v end=$last 'NR==beginning, NR==end' $file
sedこれをうまく処理する原始的なツールです。
sed -n '2,4p' file # method 1
sed '2,4!d' file # method 2
sed1line.txtを参照してください。sedワンライナーのための素晴らしいリソース。
これを行う最も簡潔な方法は次のsedとおりです。
$ sed '2,4!d' file
bbb
ccc
ddd