Linux文字处理工具中, 有另一个杀器awk
但awk是个程序语言
, 所以它很灵活且功能强大.
awk可以帮助我们统计
,可以制作表格
等等的格式化以後, 做显示, 算是个报告生成器
## awk处理方式
一行
内容, 跟下一节的sed
一样都是行处理工具切片
处理, 对单字做切片// 输出第一个单字
awk '{print $1}'
// 命令行格式
awk [options] 'command' file(s)
// awk程序区块格式
awk -f awk-script-file file(s)
// 管道格式
stdout | awk [options] 'command'
stdout | awk -f awk-script-file
awk [options] 'command' file(s)
这里command
也有自己的格式pattern {awk操作命令}
pattern这里可以是Regex也可以是逻辑判断式, 是不是很强大?
awk -F ':' '{print $1}' /etc/passwd
把/etc/passwd给输出出来, 如下图
透过awk取得用户名称, 用户名称依照:
做分割的话, 会是第一个字段
透过awk把第1个字段和第3个字段UID一起输出, 透过,
在变数之间多个空格, 是awk预设的分隔符号.
如果是这样打'{print $1 $3}'
, 对awk来说是把字串做拼接, 并不会把字串做分隔.
又或是透过" "
把空格视为字串一起输出; 也能透过这种方式, 补充些说明文字
awk -F ':' '{print $1,$3}' /etc/passwd
awk -F ':' '{print "User:"$1" ""UID:"$3}' /etc/passwd
// 输出行号与每行的字段总数量
awk -F ':' '{print NR,NF}' /etc/passwd
透过刚刚学的, 将/etc/passwd中的用户名称, 行号跟字段数量给输出
awk -F ':' '{print "Ln:"NR,"WordCnt:"NF,"User:"$1}' /etc/passwd
也能透过printf
做格式化字串
awk -F ':' '{printf "Ln:%2s WordCnt:%s User:%s\n", NR,NF,$1}' /etc/passwd
// 需要加上\n, 替每一行的输出做换行
只输出UID > 10的行号、用户名
awk -F ':' '{if ($3>100) printf "Ln:%2s User:%s\n", NR, $1}' /etc/passwd
找出/var/log/syslog中发生Error的日期时间
可以透过之前的grep来查找後, 在用awk只输出日期时间
grep "Error" syslog | awk '{print $1, $2, $3}'
也能在awk中使用Regex
awk '/Error/{print $1,$2,$3}' syslog
awk关键字不多, 可以在整理输出时, 用一些控制命列+逻辑运算做些过滤, 而後将结果整齐的输出
是个简单的语言也是个强大的工具
<<: Ruby on Rails CRUD 之 D(Delete)
>>: Day 5:AWS是什麽?30天从动漫/影视作品看AWS服务应用 -《爱x死x机器人》之〈自动客服〉
嵌入式系统,会因为时间关系,系统和用户的任务经常要定期的重新设定排程。所以对於某个特定时间就需要透过...
Day10 接下来,要帮 Squid 也装上 Laser, 敌人的 Laser 跟我们的外观是不一样...
函式 一个函式内会包装一段执行的动作,可以被重复的使用 如何宣告函式 宣告函式时,需要使用 func...
OptionMenu就是下拉式选单的概念,可以有不同的设定方法,可以设成有预设选项的,也可以获得选好...
-HTTP请求(来源:Chua Hock-Chuan) 测试人员在HTTP请求中操纵URL的查询字...