文章目录
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