awk
awk 是一个行编辑器,可以截取某一行的数据,处理数据,产生格式化报表的语言
列叫字段,行叫记录
awk 认为文件中的每一行就是一个记录
记录和记录的分隔符为
换行符,
字段和字段的分隔符为一个空格或者多个空格 or Tab制表符
awk的工作原理:读取数据,将每一行数据视为一条记录record,每条记录以字段分隔符分成若干个字段,然后输出各个字段的值
awk语法:awk [options][BEGIN]{program}[END][file]
字段提取:提取一个文本中的一列数据并打印输出
$0 表示整行文本
$1 表示文本行中的第一列即第一个数据字段
$n
$NF 表示文本行中的最后一个数据字段
awk '{print $0}' file
指定行号: NR==3
如果字段间不是空相隔的:
awk -F ":" 'NR==1{print $1 $2}' /etc/passwd
# root 0 root
awk -F ":" 'NR==3{print $1 '-' $2 '-' $5}' /etc/passwd
head -3 /proc/meminfo | awk 'NR==1{print $2}' # 查出内存的大小
awk -F: '$1 ~ "ro"{print $0}' /etc/passwd # ~ 模糊匹配,!~模糊匹配取反
awk 环境变量
变量 | 描述 | |
---|---|---|
FIELDWIDTHS | 以空格分隔的数字列表,用空格定义每一个数据字段的精准宽度 | |
FS | 输入字段分隔符号 | |
OFS | 输出字段分隔符号 | |
RS | 输入记录分隔符号 | |
ORS | 输出记录分隔符号 |
awk 'BEGIN{FS=":";OFS="--"}{print $1 $3}' /etc/passwd