Linux文本处理工具AWK使用解析

在linux系统上有三大文本处理工具分别是:grep,sed,awk,这次主要来看看awk。

awk  option  ‘pattern‘  file

-F    指定分隔符;

-v     申明自定义变量;

查看当前系统上,用户名和用户shell,输出分隔符为~.

# awk -F: ‘BEGIN{OFS="~";print "UserName   Shell"}{print $1,$7}END{print "================end============="}‘ /etc/passwd

还可以在中间加入模式(pattern),指定只对以in字符结尾的行做处理。

# awk -F: ‘BEGIN{OFS="~";print "UserName   Shell"}/in$/{print $1,$7}END{print "================end============="}‘ /etc/passwd

显示当前系统上id号小于等于500的用户。(表达式匹配)

# awk -F: ‘$3<=500{print $1,$3}‘ /etc/passwd

显示当前系统上shell是/bin/bash的用户(模式匹配)

# awk -F: ‘BEGIN{OFS=":";print "UserName  Shell"}$7~/bash/{print $1,$7}‘ /etc/passwd

控制语句:

判断用户ID是否为0,如果是就输出用户名并说明是一个管理员用户,如果不是输出用户名,说明是一个普通用户。

# awk -F: ‘{if ($3==0) {print $1,"Administrator";} else {print  $1,"Common User"}}‘ /etc/passwd

统计下系统上有多少个id号大于500的用户

# awk -F: -v Sum=0 ‘{if ($3>=500) Sum++}END{print Sum}‘ /etc/passwd

显示number.txt文件中,所以大于100的数值。

# awk  ‘{i=1;while (i<=NF) {if ($i>=100) print $i;i++}}‘ number.txt

do-while    至少执行一次循环体,不管条件满足与否。

# awk -F: ‘{i=4;do {print $i;i--}while (i>4)}‘ /etc/passwd

遍历/etc/passwd  $1-$3数值,只输出字符数大于4的数据。

# awk -F: ‘{for(i=1;i<=3;i++){if (length($i)>=4){print $i}}}‘ /etc/passwd

使用for显示number.txt文件中,所以大于100的数值。

# awk ‘{for (i=1;i<=NF;i++){if ($i>=100) {print $i}}}‘ number.txt

查看网络连接各个状态的次数

# netstat -tan | awk ‘/^tcp/{state[$NF]++}END{for ( S in state) print S,state[S]}‘

统计日志每个ip访问了多少次

# awk ‘{ip[$1]++}END{for ( A  in ip ) print  A,ip[A]}‘  access_log

统计当前系统用户,每种shell各有多少个。

# awk -F: ‘{count[$NF]++}END{for (A in count )print A,count[A]}‘ /etc/passwd

awk的内置函数

split        将数据按分隔符切片保存至数组里

length     返回字符串的字符个数

查看当前每个IP连接,与连接次数。

# netstat -tan | awk ‘/:80/{split($5,client,":");IP[client[4]]++}END{for (A in IP) print A,IP[A]}‘

就是数组和split函数这里难了

OK完成了

Linux文本处理工具AWK使用解析,布布扣,bubuko.com

时间: 2024-10-01 03:31:30

Linux文本处理工具AWK使用解析的相关文章

linux之文本处理工具awk

文本处理工具awk用法(介绍在最后) awk -v FS=: '{print $1,FS,$3}' /etc/passwd {FS}可省略 awk -v FS=: -v OFS=^^^ '{print $1,$3}' /etc/passwd awk -F: -v OFS=^^^ '{print $1,$3}' /etc/passwd awk -F: '{print $1,$NF}' /etc/passwd ls /media/cdrom/Packages/ | awk -F"." '{

linux文本处理工具

linux文本处理工具 1.Linux 文件系统上的特殊权限: SUID     SGID   Sticky 进程的安全上下文:(1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行去权限 (2)启动为进程后,其属主为发起者,属组为发起者所属的组 (3)进程访文件的权限,取决于进程的发起者 (a)  进程的发起者,同文件的属主:则应用文件属主权限                                            (b)  进程的发起者,属于文件属组:则

Linux文本处理工具之join,paste

大纲 1.join是什么?有什么作用? 2.join语法格式 3.实战演练 4.引入paste命令 1.join是什么?有什么作用? Linux下最常用的数据文件格式是文本格式的,使用分隔符来区分不同的字段,比如冒号(:).制表符.空格等.像常见的/etc/passwd和 /etc/group两个文件就是用":"来分隔的.这种文本格式我们可以视为文本数据库,既方便人去阅读,也适合程序处理,通常某列类似于数据库中的关键字. join命令就是一个根据关键字合并数据文件的命令(join li

Linux 文本处理工具

Linux 文本处理工具 wc 打印行.词.字节的数量 cut 按列切分文本  sort 排序 uniq 消除重复行 wc 打印行.词.字节的数量 语法: wc [OPTION]... [FILE]... 选项: -l:line 统计行数 -w:words 统计单词数 -c:characters 统计字符数 示例: [[email protected] ~]$ cat wctest hello world 123 [[email protected] ~]$ wc -l wctest    #统

Linux文本处理工具——Grep

Grep简介 全名:Global search Regular expression and Print out the line. 功能:文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行. Linux的三大文本处理工具之一,可以说学好grep命令无疑是重要的,可以说学好grep也是不容易的,因为grep里面要用到最烦人的正则表达式. grep语法格式 grep [option]... 'PATTERN' FILE... [option]:表示可以跟选项,

Linux命令:文本处理工具awk详解一

awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的.awk每接收文件的一行,然后执行相应的命令,来处理文本.  1.命令格式: awk 'pattern {action}'{filenames} 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所 执行的一系列命令.花括号({})不需要在程序中始终出现,但它们用于根据特定的 模式对一系列指令进行分组. pattern就是要表示的正则表达式,用斜杠括起来. 调用a

Linux文本处理工具之awk

调用方式 1.命令行 awk [-F  field-separator]  'commands'  input-file(s) commands是真正awk命令,[-F域分隔符]是可选的.input-file(s) 是待处理的文件.在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域.通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格(或者tab). 2.shell脚本方式 将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,以便通过键入脚本名

Linux文本处理工具三剑客之grep

Linux家族关于文本处理的工具有三个,他们分别为grep.awk和sed,今天我就介绍一下grep文本处理工具. 首先,什么是grep呢? grep是一种文本搜索工具,基于"pattern"对给定文本进行搜索过滤,并对目标文本进行检查,并打印出符合条件的文本的一款文本处理工具.说到pattern,那么pattern又是什么呢?那就是大家所熟知的"正则表达式". grep家族又有三个成员:grep,egrep和fgrep. grep: 支持正则表达式. egrep:

文本处理工具awk基础用法

sed是以行为单位的文本处理工具,awk则以列为单位. 文件都是结构化的,都是有单词和空白字符组成的. 空白字符包括空格.tab以及连续的空格和tab.每个非空白部分叫做域, $0表示 全部域, $1表示第1个域等等-- 默认以空白字符为分隔符,打印前两列 [email protected]:~/templates$ cat data.txt a.wang Male 30 021-11111111 b.yang Female 25 021-22222222 c.liu Male 33 021-3