0
点赞
收藏
分享

微信扫一扫

Linux三剑客awk之行和列


一、介绍

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具,也是一门语言,有自己的数据结构,可以进行过滤、统计、计算、取行取列等操作

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符

wak -F, 'BEGIN{print "name"}{print $2}END{print "end of file"}' oldboy.txt
wak -F, 'BEGIN{print "name"}NR==2{print $2}END{print "end of file"}' oldboy.txt # 条件为,行==2

Linux三剑客awk之行和列_分隔符


Linux三剑客awk之行和列_linux_02

Linux三剑客awk之行和列_服务器_03

二、awk行与列

awk中名词

说明


记录,record

每行默认以回车分割


字段,域,field

每列默认通过空格分割,-F可以指定分隔符

内置变量

说明

NR

Number of Record,记录号,行号

NF

Number of Field,域号,列号

FS

Field Separator,每个字段的分隔符,-vFS可修改分隔符

OFS

Out Field Separator,每个字段的输出分隔符,默认是空格,-vOFS可修改输出分隔符

三、awk取行

awk取行

NR==1

取第一行

NR>=1 && NR <=5

取第1~5行

/101/,/105/

从含有字符串101的行到含有字符串105的行

Linux三剑客awk之行和列_linux_04

四、awk取列

  • -F:指定分隔符,默认是空格/连续空格/tab
  • $3:取出第3行,列数从1开始,不从0开始
  • $0:表示一整行
  • $NF:表示最后一列
  • $(NF-1):表示倒数第二列

awk '{print $1}'
awk '{print $1,$9}'

Linux三剑客awk之行和列_服务器_05


Linux三剑客awk之行和列_运维_06

  • 取出整行

awk 'NR==4{print $0}'

Linux三剑客awk之行和列_服务器_07

  • 取出/etc/passwd的第一列和最后一列

awk -F: '{print $1,$NF}'

Linux三剑客awk之行和列_服务器_08

  • 使用awk交换/etc/passwd第一列和最后一列的内容

Linux三剑客awk之行和列_linux_09

awk -F: '{print $NF,$2,$3,$4,$5,$6,$1}' /etc/passwd
awk -F: '{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
awk -vFS=: -vOFS=: '{print $NF,$2,$3,$4,$5,$6,$1}'

  • 取出ip地址

ip a s ens33 | awk -F"[ /]+" 'NR==4{print $3}'
ip a s ens33 | awk -vFS="[ /]+" 'NR==4{print $3}'

Linux三剑客awk之行和列_字段_10


举报

相关推荐

0 条评论