在网上看到一个很巧妙的方法,可以删除文件的首行、尾行和首尾两行,原理和操作记录如下
利用awk按行遍历,依次执行body的特点, 如下面命令
awk 'NR>1 {print line} {line=$0}' 作用是去掉最后一行。
首轮先输出line(此时为空值,打印空行,所以用 NR>1 跳过此输出),再把首行赋值给line变量,
然后在第二轮输出了line(此时为第一行内容),循环到最后一行时,输出为倒数第二行内容。
最后把最后一行赋值给line,但循环已完,所以最后一行不会输出,即去掉最后一行。
按上面原理
如果想去掉首行,就设置 NR>2
如果想保留最后一行,可以在END输出line即可
删除首行
[root@rabbit-api-001 test]# cat a.txt # 原文件内容,共4行
a1
a2
a3
a4
[root@rabbit-api-001 test]# awk 'NR>2{print line}{line=$0} END{print line}' a.txt
a2
a3
a4
删除尾行
[root@rabbit-api-001 test]# awk 'NR>1{print line}{line=$0}' a.txt
a1
a2
a3
删除首尾两行
[root@rabbit-api-001 test]# awk 'NR>2{print line}{line=$0}' a.txt
a2
a3