0

例えば

ファイルa.txtには次のコンテキストがあります

aaa
bbb
ccc
ddd
eee 

この目標を達成できるスクリプトは何ですか?

script.sh a.txt 2 4

出力:

bbb
ccc
ddd

2 と 4 は指定された行番号です。

4

4 に答える 4

6

これに使用できます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
于 2013-06-11T14:39:14.877 に答える
5

sedこれをうまく処理する原始的なツールです。

sed -n '2,4p' file          # method 1
sed '2,4!d' file            # method 2

sed1line.txtを参照してください。sedワンライナーのための素晴らしいリソース。

于 2013-06-11T14:47:35.247 に答える
3

これを行う最も簡潔な方法は次のsedとおりです。

$ sed '2,4!d' file
bbb
ccc
ddd
于 2013-06-11T14:45:40.093 に答える