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如何输出文件的指定列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 shell(awk、sed 等)删除文件中的前两列