awk命令

df -h | cut -d ‘ ‘ -f 5 空格键作为分隔符,cut不能使用
格式:awk ‘条件1{动作1} 条件2{动作2}’ 文件名
 
awk ‘{printf $2“\t" $6"\n”}’student.txt $2第二列,$6第6列  无条件执行
df -h | awk ‘{printf $1”\t” $5”\t” $6”\n”}’   print命令自带换行符  「  $0 整行、$1第一列、$2 第二列  」 
df -h | grep sda5 | awk ‘{print $5}’ | cut -d “%” -f 1
awk ‘BEGIN{print “test !!"} {print $2 “\t” $4}’ student.txt BEGIN在awk开始前执行
awk ‘BEGIIN{FS=“:"} {print $1 “\t” $3}’ /etc/passwd   「 FS指定分隔符 &  -F 」 
awk ‘BEGIN{FS=“:”} END{print “aaaa"}{print $1”\t” $3}’ /etc/passwd
awk ‘BEGIN{FS=“:”;print “start…"} END{print “END…"} {print $1“\t” $3}’ /etc/passwd   END程序结束时执行
cat student.txt | grep -v Name | awk ‘$4 >=87 {print $2}’ 逻辑判断
cat student.txt | grep -v ‘ID’ | awk ‘/2/{print}’  打印匹配2行 
awk  -F  ":"  ‘{print $1"\t" $3}’  /etc/passwd 指定分隔符
 
# 筛选第四列 > 500
awk 'BEGIN {print "开始"} $4 > 500 {printf $0 "\t" $1 "\t" $2 "\t" $3 "\t" $4 "\t" $5 "\t" $6 "\t" $7 "\n"} END {print "结束"}’ student.txt 
awk '/judy/ {print $1}' student.txt    「 /字符串匹配/」 
df -h | awk '/dev\/disk[12]s[14]/ {print $1 "\t" $5}'
 
# printf命令,AWK专用
printf '输出格式’ 输出内容
%ns 字符串,n表示几个字符
%ni   正数
%m.nf 浮点数
\n 换行
\r 回车即Enter键
\t 水平输出Tab键
\v 垂直输出Tab键
printf %s 1 2 3 4 5 6
printf '%s %s %s\n' 1 2 3 4 5 6
printf ‘%s’ $(cat student.txt) 输出student.txt的内容
printf ‘%s\t %s\t %s\t %s\n’ $(cat student.txt)4列
printf ‘%s\t %s\t %s\t %s\n’ $(cat student.txt | grep -v ID) 去除首行
print命令 Linux中没有
 
 
awk '/root/' /etc/passwd    「 pattern 」 
awk -F ':' '/root/ {print $7}' /etc/passwd    「 pattern {action}  & -F 分隔符 」
awk -F ':' '{print "文件名:" FILENAME ",行号:" NR ",列数:" NF ",内容:" $0}' passwd
  • -F 分隔符
  • FILENAME 文件名
  • NR 行号
  • NF 行列数   $NF最后列
  • $0 行内容
awk -F ':' 'NR==2 {print "filename:" FILENAME,$0}'  passwd    「 打印第二行 」
ls -Fl | awk '/^d/'
awk -F ':' '{print $1}'  passwd 「 第一列 」 
awk -F ':' '{print $NF}'  passwd    「 最后列 」
awk -F ':' '{print $NF-1}'  passwd    「 倒数第二列 」
awk -F ':' '{ if(NR <5 && NR >2)  print $1}’  passwd 「 打印3,4行的第一列 」
awk -F '[:/]' '{print $0,$NF}'  passwd    「 多分隔符」
awk -F ':' 'BEGIN {print "Start..."} {print $0,$1,$NF} END{print "End..."} ' passwd    「 BEGIN END 嵌套 」 
last | awk '{print $3}’
ls -lF | awk '{if($5 > 102400) {count++;sum+=$5}} {print count,sum}’    「 局部变量 」 
ls -lF | awk '{if($5 > 102400) print $NF,$5}’    「 >100k 的文件 」 
awk -F ':' '{count++;} END{print count}' /etc/passwd 「 统计行」 
 
# 获取IP
ifconfig eth0 | awk -F '[ ]+' '{if(NR==2) print $3}’    「 指定多个空格为分隔符 」 
 
# 登录最多的IP 
last | awk '{S[$3]++} END{for(a in S) print S[a],a}' | uniq | sort -rh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值