阅读背景:

shell - AWK

来源:互联网 

AWK

# begin 行处理前
awk 'BEGIN {FS=":" ; OFS="+++++++++++"} {print 

AWK

# begin 行处理前
awk 'BEGIN {FS=":" ; OFS="+++++++++++"} {print $1,$3}' /etc/passwd
# 处理前,处理中,处理后
BEGIN{处理前}   {行处理}   END{处理后}
awk 'BEGIN {print 1/2} {print 'ok'} END {print 'over'}' /etc/passwd
print 'ok'  为行处理,passwd 有两行则打印两个

#  匹配内容
awk '/root/' /etc/passwd
# 处理动作
awk '{action}' filename
awk -F: '{print $1}' /etc/passwd
# 匹配+处理动作
awk -F ":" '/root/ {print $1,$2}' /etc/passwd
# 判断大于多少则输出
df|awk '/\$/ {if ($3>500000) print $4}'

awk 工作原理

# awk -F ":" '{print $1,$3}' /etc/passwd
1. 载入文件中的第一行,然后将这一行放入模式空间,并将彼此赋值给¥0
2. 通过字段分隔符,切割整行的内容,并将切割后的字段按$0,$1,$2
3. 检查print函数需要打印的字段,然后从模式空间中取出字段对应的值
4. 默认结果以空格为分隔,也可修改OFS内部变量调整
5. 将结果输出到终端,awk开始循环1-5步骤

-F  由FS内部变量决定整行内容如何存储在模式空间
    也可以使用航处理前的操作 BEGIN{FS=":"}
1. 同时指定多个分隔符
awk -F "[: ]" '{print $2}' file.txt
awk -F "[: ]+" '{print $2}' file.txt 
2. 内置变量
# NF 统计一行一共有多少列
$NF  保存最后一列的值(永远代表最后一行)
$(NF-1)  倒数第二行

# NR表示行号
awk '{print NR,$0}' file.txt
awk 'NR!=3 {print $0}' file.txt
grep -n "." file.txt  # 显示行号
# FNR, 处理多个文件用到的
awk '{print FNR,$0}' A.TXT B.TXT
行号12345 12345
打印第二行到第三行
awk 'NR>1&&NR<4 {print $0}' a.txt
# FS指定字段分隔符,默认空格
awk -F: '/root/{print $1,$3}' /etc/passwd
awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd   
awk -F '[ :\t]' '{print $1,$2}' /etc/passwd
# OFS 指定输出字段分隔符
,逗号映射为OFS. 初始情况下OFS变量是空格
awk -F: '/root/{print $1,$2}' /etc/passwd
awk -F: 'BEGIN{OFS="-------"} /root/{print $1,$2}' /etc/passwd


转载自www.cnblogs.com/Afrafre/p/11405738.html,}' /etc/passwd # 处理前,处理中,处理后 BEGIN{处理前} {行处理} END{处理后} awk 'BEGIN {print 1/2} {print 'ok'} END {print 'over'}' /etc/passwd print 'ok' 为行处理,passwd 有两行则打印两个 # 匹配内容 awk '/root/' /etc/passwd # 处理动作 awk '{action}' filename awk -F: '{print

AWK

# begin 行处理前
awk 'BEGIN {FS=":" ; OFS="+++++++++++"} {print $1,$3}' /etc/passwd
# 处理前,处理中,处理后
BEGIN{处理前}   {行处理}   END{处理后}
awk 'BEGIN {print 1/2} {print 'ok'} END {print 'over'}' /etc/passwd
print 'ok'  为行处理,passwd 有两行则打印两个

#  匹配内容
awk '/root/' /etc/passwd
# 处理动作
awk '{action}' filename
awk -F: '{print $1}' /etc/passwd
# 匹配+处理动作
awk -F ":" '/root/ {print $1,$2}' /etc/passwd
# 判断大于多少则输出
df|awk '/\$/ {if ($3>500000) print $4}'

awk 工作原理

# awk -F ":" '{print $1,$3}' /etc/passwd
1. 载入文件中的第一行,然后将这一行放入模式空间,并将彼此赋值给¥0
2. 通过字段分隔符,切割整行的内容,并将切割后的字段按$0,$1,$2
3. 检查print函数需要打印的字段,然后从模式空间中取出字段对应的值
4. 默认结果以空格为分隔,也可修改OFS内部变量调整
5. 将结果输出到终端,awk开始循环1-5步骤

-F  由FS内部变量决定整行内容如何存储在模式空间
    也可以使用航处理前的操作 BEGIN{FS=":"}
1. 同时指定多个分隔符
awk -F "[: ]" '{print $2}' file.txt
awk -F "[: ]+" '{print $2}' file.txt 
2. 内置变量
# NF 统计一行一共有多少列
$NF  保存最后一列的值(永远代表最后一行)
$(NF-1)  倒数第二行

# NR表示行号
awk '{print NR,$0}' file.txt
awk 'NR!=3 {print $0}' file.txt
grep -n "." file.txt  # 显示行号
# FNR, 处理多个文件用到的
awk '{print FNR,$0}' A.TXT B.TXT
行号12345 12345
打印第二行到第三行
awk 'NR>1&&NR<4 {print $0}' a.txt
# FS指定字段分隔符,默认空格
awk -F: '/root/{print $1,$3}' /etc/passwd
awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd   
awk -F '[ :\t]' '{print $1,$2}' /etc/passwd
# OFS 指定输出字段分隔符
,逗号映射为OFS. 初始情况下OFS变量是空格
awk -F: '/root/{print $1,$2}' /etc/passwd
awk -F: 'BEGIN{OFS="-------"} /root/{print $1,$2}' /etc/passwd


转载自www.cnblogs.com/Afrafre/p/11405738.html}' /etc/passwd # 匹配+处理动作 awk -F ":" '/root/ {print

AWK

# begin 行处理前
awk 'BEGIN {FS=":" ; OFS="+++++++++++"} {print $1,$3}' /etc/passwd
# 处理前,处理中,处理后
BEGIN{处理前}   {行处理}   END{处理后}
awk 'BEGIN {print 1/2} {print 'ok'} END {print 'over'}' /etc/passwd
print 'ok'  为行处理,passwd 有两行则打印两个

#  匹配内容
awk '/root/' /etc/passwd
# 处理动作
awk '{action}' filename
awk -F: '{print $1}' /etc/passwd
# 匹配+处理动作
awk -F ":" '/root/ {print $1,$2}' /etc/passwd
# 判断大于多少则输出
df|awk '/\$/ {if ($3>500000) print $4}'

awk 工作原理

# awk -F ":" '{print $1,$3}' /etc/passwd
1. 载入文件中的第一行,然后将这一行放入模式空间,并将彼此赋值给¥0
2. 通过字段分隔符,切割整行的内容,并将切割后的字段按$0,$1,$2
3. 检查print函数需要打印的字段,然后从模式空间中取出字段对应的值
4. 默认结果以空格为分隔,也可修改OFS内部变量调整
5. 将结果输出到终端,awk开始循环1-5步骤

-F  由FS内部变量决定整行内容如何存储在模式空间
    也可以使用航处理前的操作 BEGIN{FS=":"}
1. 同时指定多个分隔符
awk -F "[: ]" '{print $2}' file.txt
awk -F "[: ]+" '{print $2}' file.txt 
2. 内置变量
# NF 统计一行一共有多少列
$NF  保存最后一列的值(永远代表最后一行)
$(NF-1)  倒数第二行

# NR表示行号
awk '{print NR,$0}' file.txt
awk 'NR!=3 {print $0}' file.txt
grep -n "." file.txt  # 显示行号
# FNR, 处理多个文件用到的
awk '{print FNR,$0}' A.TXT B.TXT
行号12345 12345
打印第二行到第三行
awk 'NR>1&&NR<4 {print $0}' a.txt
# FS指定字段分隔符,默认空格
awk -F: '/root/{print $1,$3}' /etc/passwd
awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd   
awk -F '[ :\t]' '{print $1,$2}' /etc/passwd
# OFS 指定输出字段分隔符
,逗号映射为OFS. 初始情况下OFS变量是空格
awk -F: '/root/{print $1,$2}' /etc/passwd
awk -F: 'BEGIN{OFS="-------"} /root/{print $1,$2}' /etc/passwd


转载自www.cnblogs.com/Afrafre/p/11405738.html,}' /etc/passwd # 判断大于多少则输出 df|awk '/$/ {if (>500000) print }'# begin 行处理前 awk 'BEGIN {FS=":" ; OFS="+++



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: