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
    评论
### 回答1: 可以使用`awk`命令的 `$NF` 变量来获取命令输出内容最后一列,其中`NF`表示字段数量, `$NF` 表示最后一个字段。 假设你要获取`ps`命令的输出中最后一列,你可以使用以下命令: ``` ps | awk '{print $NF}' ``` 在这个命令中,`ps` 命令的输出通过管道传递给 `awk` 命令,然后 `awk` 命令打印每最后一个字段。 如果你要获取一个文件中每最后一个字段,你可以使用类似的命令: ``` awk '{print $NF}' filename ``` 在这个命令中,`awk` 命令会打开 `filename` 文件,并打印每最后一个字段。 ### 回答2: 在awk指令中,可以使用通用字段分隔符(FS)来读取输入文本的每一行,并使用$符号引用每个字段。要获取命令输出内容中的最后一列,可以使用$NF关键字来引用最后一个字段。 可以通过以下命令来获取命令输出内容最后一列: ```shell 命令输出 | awk '{print $NF}' ``` 其中,“命令输出”是你要获取最后一列的命令命令。也可以将命令输出重定向到输入文件中,然后使用awk命令来处理文件内容。 例如,要获取ls命令的输出内容中的最后一列文件名,可以使用以下命令: ```shell ls | awk '{print $NF}' ``` 这将打印出当前目录下每个文件文件名。假设当前目录只有一个文件“file.txt”,则命令的输出将是“file.txt”。 注意,以上命令中的字段分隔符默认是空格。如果需要使用其他分隔符,可以使用-F选项来指定。例如,如果文件中的字段是以逗号分隔的,可以使用以下命令: ```shell 命令输出 | awk -F ',' '{print $NF}' ``` 这将打印出以逗号分隔的每最后一个字段。 ### 回答3: AWK是一种功能强大的文本处理工具,可以轻松处理文本文件和命令输出。要从命令输出内容获取最后一列,可以使用AWK的字段分隔和打印功能。 AWK默认以空格作为字段分隔符,因此可以使用$NF变量来表示最后一个字段。$NF代表当前最后一个字段,无论此包含多少个字段。 下面是使用AWK指令获取命令输出内容最后一列的基本语法: ``` command | awk '{print $NF}' ``` 其中,command是生成命令输出的实际命令。该命令的输出作为管道输入传递给AWK指令。`{print $NF}`用于告诉AWK指令打印每一行最后一个字段。 例如,如果我们有一个命令输出内容如下: ``` Name Age Gender John 25 Male Lucy 28 Female ``` 运以下命令: ``` echo -e "Name Age Gender\nJohn 25 Male\nLucy 28 Female" | awk '{print $NF}' ``` 将输出: ``` Gender Male Female ``` 这样就可以获取到命令输出内容中的最后一列了。 需要注意的是,这个方法仅适用于命令输出内容之间以空格分隔字段的情况。如果字段分隔符是其他字符,可以使用AWK的-F选项指定不同的字段分隔符。 希望以上解答对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值