5

如何在unix中使用headand选择文件第二行到最后一行之前的行?tail

例如,如果我的文件有 15 行,我想选择从 2 到 14 的行。

4

3 回答 3

16
tail -n +2 /path/to/file | head -n -1
于 2012-10-03T08:39:18.790 回答
1
perl -ne 'print if($.!=1 and !(eof))' your_file

测试如下:

> cat temp
1
2
3
4
5
6
7
> perl -ne 'print if($.!=1 and !(eof))' temp
2
3
4
5
6
> 

或者在 awk 中,您可以使用以下内容:

awk '{a[count++]=$0}END{for(i=1;i<count-1;i++) print a[i]}' your_file
于 2012-10-03T09:05:19.520 回答
1

要打印除第一行和最后一行之外的所有行,您也可以使用它awk

awk 'NR==1 {next} {if (f) print f; f=$0}'

这总是打印上一行。为了防止第一个被打印出来,我们在NR为 1 时跳过该行。然后,最后一个不会被打印,因为在读取它时我们正在打印倒数第二个!

测试

$ seq 10 | awk 'NR==1 {next} {if (f) print f; f=$0}'
2
3
4
5
6
7
8
9
于 2015-04-02T15:24:34.350 回答