12

我可以使用什么 unix shell 命令从文件中获取行 x(例如 10)到 y(例如到 15)。grep似乎没有帮助,除了做一个 for 循环我想不出别的。

4

5 回答 5

31

您可以使用sed

sed -n '5,10p' filename

打印从 5 到 10 的行。

于 2013-06-05T07:54:44.550 回答
8

头部 y,尾部 yx

head -n 15 filename | tail -n 5
于 2013-06-05T07:56:21.620 回答
5

awk:

awk 'NR>=10 and NR<=15' your_file

perl:

perl -lne 'print if($.>=10 && $.<=15)' your_file

测试如下:

> cat temp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> nawk 'NR>=10&&NR<=15' temp
10
11
12
13
14
15
> perl -lne 'print if($.>=10&&$.<=15)' temp
10
11
12
13
14
15
>
于 2013-06-05T08:02:53.090 回答
3

对于更大的文件:

sed '10,15! d;15q' file
于 2013-06-05T08:48:21.077 回答
3

您可以使用headand tail,例如

head -n 15 $file | tail -n 5
于 2013-06-05T07:54:55.130 回答