awk
编辑器
流编辑器
擅长处理列
读入一行 执行一次主输入循环
语法
# awk 选项 '{}' 文件名
{} 主输入循环
print 打印
字符串 必须加引号
数字 不能加引号
变量 不能加引号
[root@web ftp]# awk '{print "abc"}' a.txt
abc
abc
abc
abc
abc
# awk '{abc=8;print abc}' a.txt
8
8
8
8
8
记录
以记录分隔符分割的字符串
\n是默认的记录分隔符
RS record separator
字段
包含在记录内
以字段分隔符分割的字符串
空白部分 是默认的字段分隔符
空格 多个空格 tab键
当记录分隔符不是\n的时候,\n会变成默认的字段分隔符
FS field separator
$1 第一个字段
$2 第二个字段
$...
NF number of field
NR number of record
javascript
# awk -F : '{print $1}' /etc/passwd
# awk -F : '{print $1$3}' /etc/passwd
# awk -F : '{print $NF}' /etc/passwd
# sed -r 's/(.*)(:x:)([0-9]+)(:.*)/\1\3/' /etc/passwd
# awk -F : '/root/{print $1$3}' /etc/passwd
root0
operator11
[root@web log]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
# awk -F : 'NR==5{print $1$3}' /etc/passwd
lp4