shell awk如何输出文件的指定列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell awk如何输出文件的指定列相关的知识,希望对你有一定的参考价值。

awk指定读取文件中的某一行的某个字段

awk 可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下

awk ‘NR==m,NR==n print $k’ path/filename

m,n,k表示实在的数值。如果要用变量来表示m,n的值,则变量需要用单引号将其引起来。

NR,print 是awk命令在此用法下的规定字段;path/filename表示读取文件的路径及文件名。

当要读取某一行的内容的k字段时,使用格式如下

awk ‘NR==m print $k’ path/filename

m,k与以上的含义一致,分别表示要读取的行数和当前行的第k字段。
参考技术A 只能上当受骗

shell七之awk的用法

1、格式:

awk关键字 选项 命令部分 ‘{xxxx}’ 文件名

2、内置变量:

$0 整行内容
$1 第一列
$2 第二列
$ n n表示数字,$n表示第n列
NF 列相关
NR 行相关
FS 列的分隔符
OFS 新输出时列的分隔符
RS 行的分隔符
ORS 新输出的行分隔符

3、实例

1、awk ‘{print $1}’zz.txt
#输出整个文本的第一列,默认以空格或tab键分隔
2、awk '{print}' zz.txt
#输出整个文本

-F 指定列的分隔符
1、awk -F: '{print $1,$4}' zz.txt
#以:为分隔,输出第一和第四列
2、awk -F[:/] '{print $2}' zz.txt
#定义看多个分隔符时,用[  ]

//匹配内容
1、awk -F: '/root/{print $0}' zz.txt
#匹配含有root的行,并且显示行数和该行的所有内容
2、awk -F: '/root/{print NF "用户为"$1}' zz.txt
#匹配含有root的行,并且显示列数和“用户名+第一列的内容”

3[root@localhost ~]# awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bashot:x:0:0:root:/root:/bin/bash
#只是匹配输出行,没有其他选项时,可以省略{print}

指定行打印
1、awk 'NR==3{print $0}'
#输出第三行的全部内容
2、awk 'END{print $0}' 文件名
打印最后一行

在这里插入图片描述
在这里插入图片描述

以上是关于shell awk如何输出文件的指定列的主要内容,如果未能解决你的问题,请参考以下文章

awk查找指定行指定列的数据 并输出到文件

awk查找指定行指定列的数据 并输出到文件

shell字符串截取

如何使用 shell(awk、sed 等)删除文件中的前两列

shell法宝之awk,教你如何熟练掌握文件内容的输出和搜索

7Shell工具 cut sed awk sort