【发布时间】:2012-10-03 08:34:35
【问题描述】:
如何在 unix 中使用head 和tail 选择文件第二行到最后一行之前的行?
例如,如果我的文件有 15 行,我想选择从 2 到 14 的行。
【问题讨论】:
如何在 unix 中使用head 和tail 选择文件第二行到最后一行之前的行?
例如,如果我的文件有 15 行,我想选择从 2 到 14 的行。
【问题讨论】:
tail -n +2 /path/to/file | head -n -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
【讨论】:
要打印除第一行和最后一行之外的所有行,您也可以使用 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
【讨论】: