Chinaunix

标题: 如何使用shell获取一列数据的最后三个 [打印本页]

作者: jamesapple321    时间: 2019-11-19 16:35
标题: 如何使用shell获取一列数据的最后三个
各位好:
       请教个问题,现在有一列数据,如何使用shell获取最后三行以外的字段
master-35.jar
master-37.jar
master-38.jar
master-47.jar
master-48.jar
master-49.jar
master-55.jar
master-59.jar


作者: jzsjm1002    时间: 2019-11-19 17:03
  1. awk '{a[NR]=$0}END{for(;++i<=length(a)-3;)print a[i]}' file
复制代码

作者: legs    时间: 2019-11-20 08:06
#GNU head
head -n -3 file

#Perl
perl -e'@a=<>;print@a[0..@a-4]' file
作者: moperyblue    时间: 2019-11-20 11:41

  1. sed '1{$d;N};$!N;$d;P;D'
复制代码

作者: fengzi321    时间: 2019-12-19 11:46
回复 2# jzsjm1002

报错呢
feng@ubuntu:~$ awk '{a[NR]=$0}END{for (;++i <= length(a)-3{print a}}' A
awk: line 1: illegal reference to array a



作者: fengzi321    时间: 2019-12-19 11:46
回复 2# jzsjm1002



作者: fengzi321    时间: 2019-12-19 11:47
回复 2# jzsjm1002
报错
feng@ubuntu:~$ awk '{a[NR]=$0}END{for (;++i <= length(a)-3{print a}}' A
awk: line 1: illegal reference to array a


作者: jzsjm1002    时间: 2019-12-19 13:06
回复 7# fengzi321

print a 打错了a是数组

作者: fengzi321    时间: 2019-12-19 16:30
回复 8# jzsjm1002
是不是length(a)有问题?
feng@ubuntu:~$ awk '{a[NR]=$0}END{for(;++i<=length(a)-3print a}' A
awk: line 1: illegal reference to array a

作者: fengzi321    时间: 2019-12-19 16:32
回复 9# fengzi321
这样子就没什么问题
awk '{a[NR]=$0}END{for (i=1;i<= NR-3;i++){print a}}' A


作者: fengzi321    时间: 2019-12-19 16:34
回复 8# jzsjm1002

显示有问题?我脚本里明明是print a的,贴进来显示却看不到a,....

作者: jzsjm1002    时间: 2019-12-19 16:50
本帖最后由 jzsjm1002 于 2019-12-19 16:55 编辑

回复 11# fengzi321
  1. a是数组 不能直接用 print a 打印出来
  2. 应该用 print a[i]

  3. awk '{a[NR]=$0}END{for(;++i<=length(a)-3;)print a[i]}' file
复制代码







欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2