忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
123456789
最近访问板块 发新帖
楼主: bfz814

awk 去除第一行和最后一行! [复制链接]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2016-04-28 09:50 |显示全部楼层
回复 78# hz_oracle

@lengyuzlg
    请看 48 楼解释。

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
发表于 2016-04-29 13:00 |显示全部楼层
回复 80# blackold

明白了。大神厉害
   

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
发表于 2016-04-29 17:17 |显示全部楼层
awk 'NR>2 {print p}{p=$0}' file  这个问题刚有人问过。我也是刚学的,太骚了

论坛徽章:
0
发表于 2016-07-13 16:24 |显示全部楼层
回复 79# zy86416779


这个效率太低了,还要用bc计算行数
   

论坛徽章:
0
发表于 2018-01-05 09:55 |显示全部楼层
第一次发帖

论坛徽章:
0
发表于 2018-01-05 09:55 |显示全部楼层
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' | sed '1d;$d'
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2

sed '1d' 删除第一行
sed '$d' 删除最后一行

加分号  是  "和" 的意思

论坛徽章:
0
发表于 2018-01-05 10:00 |显示全部楼层
分析


1
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}'
UUID TYPE
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2
UUID TYPE


2
#打印前一行 。通过  循环
#第一行的前一行 , 那就是空行。 本来就没有
#line =1 行数是1 ,他的前一行是空行
#循环后, 实际上是去掉了 最后一行
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' |  awk '{print p}{p=$0}'     

UUID TYPE
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2


#
UUID TYPE                                         line=1
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf         line=2
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2         line=3
UUID TYPE                                         line=4

                                                  前一行是空行
UUID TYPE                                         
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2         最后一行的前一行

#




3
#通过 NR>2  又去掉了首行
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' |  awk 'NR>2{print p}{p=$0}'
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2


=====================================


延伸


针对目标数据 ,打印前一行,循环一遍
{print p}

取出所有。 执行循环,打印前一行
{p=$0}
#取出第一列。 执行 循环,打印前一行
{p=$1}
#取出第二列。 执行 循环,打印前一行
{p=$2}




[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' |  awk '{print p}{p=$0}'

UUID TYPE
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' |  awk '{print p}{p=$1}'  

UUID
eth0
eth2
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' |  awk '{print p}{p=$2}'  

TYPE
8312ef66-5838-400c-9eb0-60fceb05cadf
870e6de1-0e88-409f-a36b-18eaf89131e2
[root@oracle-1 shell]# nmcli con | awk '{print $2,$3}' |  awk '{print p}{p=$3}'  




[root@oracle-1 shell]#



继续分析

{p=$0}  实际上取出了 所有的4行  
UUID TYPE                                      line1
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf      line2
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2      line3
UUID TYPE                                      line4

{print p}  打印前一行
line 1  打印前一行  空行  
line 2  打印前一行  UUID TYPE   
line 3  打印前一行  eth0 8312ef66-5838-400c-9eb0-60fceb05cadf  
line 4  打印前一行  eth2 870e6de1-0e88-409f-a36b-18eaf89131e2



{p=$1}  实际上取出了第一列 。循环一遍,取出 第一列的值
UUID
eth0
eth2
UUID
   
                              
{print p}  其实是在 前面数据的基础上,  又循环了一遍。
line 1  打印前一行  空行  
line 2  打印前一行  UUID  
line 3  打印前一行  eth0
line 4  打印前一行  eth2


============

延伸 2

#!/bin/bash

while read line
do
(
echo $line
)
done < 123


[root@oracle-1 shell]# sh 16.sh  
UUID TYPE
eth0 8312ef66-5838-400c-9eb0-60fceb05cadf
eth2 870e6de1-0e88-409f-a36b-18eaf89131e2
UUID TYPE


line 得到的是第一行的 信息

我想要的是行号 1 2 3 4

如此 进行判断
1行  打印回车
2行  打印原来第一行
。。。。

论坛徽章:
13
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59CU十四周年纪念徽章
日期:2018-05-15 11:36:3815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:4215-16赛季CBA联赛之深圳
日期:2018-05-04 21:53:0815-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:3915-16赛季CBA联赛之北京
日期:2018-03-23 15:24:07CU十四周年纪念徽章
日期:2018-03-16 13:09:532016科比退役纪念章
日期:2018-01-19 12:45:5915-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:48
发表于 2018-01-05 14:52 |显示全部楼层
数组:
awk '{a[NR]=$0}END{for(i=2;i<NR;i++){print a[i]}}' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP