awk命令学习

转自:https://www.runoob.com/linux/linux-comm-awk.html,https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

1.awk命令

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

# log.txt
2 this is a test 3 Do you like awk This's a test 10 There are orange,apple,mongo
awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号
  1. pattern 表示 AWK 在数据中查找的内容, 就是要表示的正则表达式,用斜杠括起来。
  2. action 是在找到匹配内容时所执行的一系列命令。

检索:

# 每行按空格或TAB分割,输出文本中的1、4项
 $ awk '{print $1,$4}' log.txt   #这里的逗号似乎没什么特别含义,用" "出来的结果也是一样的。
 ---------------------------------------------
 2 a
 3 like
 This's
 10 orange,apple,mongo

看起来功能有点像python中的pandas包?

2.通过命令行调用

awk [-F  field-separator]  'commands'  input-file(s)
commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格

例子,只是显示/etc/passwd的账户 ,格式内容如下:

#cat /etc/passwd |awk  -F ':'  '{print $1}'  
root
daemon
bin
sys

也可以结合管道和grep命令一起使用:

grep "21:52:" 14.log |grep "Url" |awk -F '.' '{print $1}'

以.作为分割符。

 

其他例子,从日志系统导出的文件,

cat aaa|awk '{print $9}'|grep -o '[0-9]*'|uniq -c|sort -n -r|head -n 10

posted @ 2022-09-28 20:39  lypbendlf  阅读(53)  评论(0编辑  收藏  举报