[实践OK]Linux/CentOS下用AWK显示前NF-1个列的字段和最后一列的写法,awk的$NF变量显示多行文本最后一列(最后列)内容的使用方法。NF 表示的是浏览记录的域的个数 。
有一个文件如下:
我现在想显示每一行, 但每一行的最后一个字段不显示, 例如结果为:
请问应该怎么实现啊, 先谢谢了
awk '{$NF="";print}'
$NF是最后一个字段的内容,把最后一个字段清空!
二)AWK显示最后一列的写法,$NF最后一列的使用方法:
但是如何获取最后一列呢?
可以使用awk -F',' '{print $NF}' 来获取,mark一下
来自:https://blog.csdn.net/slx_2011/article/details/19827307
ls -lart /data/logs/nginx/*|awk '{print $NF}'
/data/logs/nginx/error.log
/data/logs/nginx/access.log
/data/logs/nginx/jackxiang.txt
/data/logs/nginx/jackX.tt
三)单独的NF是一个分割多少列的值:
NF 表示的是浏览记录的域的个数
$NF 表示的最后一个Field(列),即输出最后一个字段的内容
[root@localhost SHELL]# free -m | grep buffers\/
-/+ buffers/cache: 1815 1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print $NF}'
1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print NF}'
4
[root@localhost SHELL]#
最后,字段分隔符问题:awk 默认以空格或制表符作为字段分隔符。如果你的文本中某些字段之间使用了多个空格或其他特殊字符分隔,可能会导致 $NF 获取错误。
这里 -F'[[:space:]]+' 表示字段分隔符是任意数量的空白字符(包括空格、制表符等)。
cat project_data_all_343_with_Classification.txt | awk -F'[[:space:]]+' '{print $NF}'
这种方法仍然不行,可以尝试打印每一行的字段总数和内容,以便调试(NF表示有多少个列的值):
cat project_data_all_343_with_Classification.txt | awk '{print NF, $0}'
cat project_data_all_343_with_Classification.txt | awk '{print NF, $0}'|grep 华为
5 84 华为sdn AC controller控制器 运维与基础设施 <=== 逗号给分出了5列,不是再是三列。
3 114 华为5G审核系统 安全与合规
3 115 华为云内容审核 安全与合规
3 257 华为汉雅项目 业务应用与工具
---------------------
作者:lm_123_456
来源:CSDN
原文:https://blog.csdn.net/github_33736971/article/details/54286736
版权声明:本文为博主原创文章,转载请附上博文链接!
w aa n t ax d
t ch ae f
d jh ah s t ih s
t ch ae f
d jh ah s t ih s
我现在想显示每一行, 但每一行的最后一个字段不显示, 例如结果为:
w aa n t ax
t ch ae
d jh ah s t ih
t ch ae
d jh ah s t ih
请问应该怎么实现啊, 先谢谢了
awk '{$NF="";print}'
awk '{$NF="";print}' test.txt
$NF是最后一个字段的内容,把最后一个字段清空!
[root@vm19 ~]# awk '{$NF="";print}' test.txt
w aa n t ax
t ch ae
d jh ah s t ih
w aa n t ax
t ch ae
d jh ah s t ih
二)AWK显示最后一列的写法,$NF最后一列的使用方法:
但是如何获取最后一列呢?
可以使用awk -F',' '{print $NF}' 来获取,mark一下
来自:https://blog.csdn.net/slx_2011/article/details/19827307
ls -lart /data/logs/nginx/*|awk '{print $NF}'
/data/logs/nginx/error.log
/data/logs/nginx/access.log
/data/logs/nginx/jackxiang.txt
/data/logs/nginx/jackX.tt
三)单独的NF是一个分割多少列的值:
NF 表示的是浏览记录的域的个数
$NF 表示的最后一个Field(列),即输出最后一个字段的内容
[root@localhost SHELL]# free -m | grep buffers\/
-/+ buffers/cache: 1815 1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print $NF}'
1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print NF}'
4
[root@localhost SHELL]#
最后,字段分隔符问题:awk 默认以空格或制表符作为字段分隔符。如果你的文本中某些字段之间使用了多个空格或其他特殊字符分隔,可能会导致 $NF 获取错误。
这里 -F'[[:space:]]+' 表示字段分隔符是任意数量的空白字符(包括空格、制表符等)。
cat project_data_all_343_with_Classification.txt | awk -F'[[:space:]]+' '{print $NF}'
这种方法仍然不行,可以尝试打印每一行的字段总数和内容,以便调试(NF表示有多少个列的值):
cat project_data_all_343_with_Classification.txt | awk '{print NF, $0}'
cat project_data_all_343_with_Classification.txt | awk '{print NF, $0}'|grep 华为
5 84 华为sdn AC controller控制器 运维与基础设施 <=== 逗号给分出了5列,不是再是三列。
3 114 华为5G审核系统 安全与合规
3 115 华为云内容审核 安全与合规
3 257 华为汉雅项目 业务应用与工具
---------------------
作者:lm_123_456
来源:CSDN
原文:https://blog.csdn.net/github_33736971/article/details/54286736
版权声明:本文为博主原创文章,转载请附上博文链接!
作者:jackx@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1493/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackx 编辑于2025-7-7 15:45
评论列表