awk 获取除去最后一行的所有行

awk 获取除去最后一行的所有行

👉 问题背景:
当前有一个文件 aa.txt ,格式如下所示,这里想要获取除去最后一行一外的所有行的内容

11
22
33
44
aa

👉 解决方案:
使用 awk 操作

awk 'NR>1 {print line} {line=$0} aa.txt

命令解析:
上述的一行 awk 命令就可以分解为,当 NR 行数大于 1 时,打印 line内容 ,第一次执行时 NR=1 不会 >1 所以没有内容输出,但是会将第一行的 $0 赋值给 line ,在当 NR=2 时,打印 line 即第一行的 $0 ,以此类推到最后一行的时候将最后一行的内容 $0 赋值给 line ,但是 awk 已经读完文件的所有行,所以最后一行没有输出了。

awk '{
	if (NR>1) print line;
	line=$0
}' aa.txt

💥 或者使用如下脚本或者命令

#!/bin/bash
lineNum=`wc -l /root/aa.txt |cut -d" " -f1`
for ((i=1; i<lineNum; i++))
do
	echo "====================="
	awk 'NR=='"${i}"' {print $0}' /root/aa.txt
	echo "#####################"
	sed -n "${i}p" /root/aa.txt
	echo "====================="
done
awk 'NR<'`cat aa.txt | wc -l`' {print $0}' aa.txt

 
 
 
 
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值