Linux三剑客之awk

前言

     awk是linux实际工作中最重要强大的工具,而且还是一门编程语言,可以用来处理数据和生成报告(Excel),处理的数据可以是一个或多个文件。

一>显示出某个范围内的内容

测试文件及内容如下:

[[email protected] data]# cat testAwk.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

1>  显示文件中的第五行

[[email protected] data]# awk 'NR==5' testAwk.txt 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

说明:NR在awk中表示行号(记录号),NR==5表示行号等于5的行。awk后面所接的内容要用单引号。

2>显示文件中第二行到第六行的内容

[[email protected] data]# awk 'NR==2,NR==6' testAwk.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

3>显示文件中第二行到第六行的内容,并打印行号

[[email protected] data]# awk 'NR==2,NR==6 {print NR,$0}' testAwk.txt 
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync

说明:print关键字表示显示的内容,相当于是awk内部的一个命令。NR还是表示行号,$0表示一整行的内容。

4>显示文件中的第一列,第三列和最后一列

[[email protected] data]# awk -F ":" '{print $1,$3,$NF}' testAwk.txt 
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
lp 4 /sbin/nologin
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
halt 7 /sbin/halt
mail 8 /sbin/nologin
operator 11 /sbin/nologin
games 12 /sbin/nologin
ftp 14 /sbin/nologin
nobody 99 /sbin/nologin

说明: A.这里我们使用了awk的-F参数,-F参数表示指定一把“菜刀分隔符”来切割每一行的内容,-F后面可用单引号双引号或不加引号,建议最好使用双引号。

B.使用"$(美元符号)"后面接数字,$1表示第一个部分(第一列),$2(第二列),$3(第三列),依次类推,但是$0表示整行。$NF表示最后一列。

5>把文件中的/sbin/nologin替换为/bin/bash(awk函数功能实践)

    

[[email protected] data]# awk '{gsub("/sbin/nologin","/bin/bash",$0);print $0}' testAwk.txt

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
adm:x:3:4:adm:/var/adm:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/bin/bash
operator:x:11:0:operator:/root:/bin/bash
games:x:12:100:games:/usr/games:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:/bin/bash
nobody:x:99:99:Nobody:/:/bin/bash

注意:A.gsub与后面的括号之间不能有空格.

B.替换对象,替换成什么内容以及哪一列之间要用逗号分隔开.

C.替换对象的外面要用双引号或者双斜线包裹起来,即"替换对象"

D.替换成什么内容就只能用双引号包裹起来了,即“替换成什么内容”

E.最后一个是哪一列。


二>


















    










        

    

原文地址:http://blog.51cto.com/11218855/2118524

时间: 2024-10-07 08:46:33

Linux三剑客之awk的相关文章

不看绝对后悔的Linux三剑客之awk实战精讲

一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用.本章主要讲解awk命令的运用 1.2 awk环境简介 [[email protected] ~]# cat /etc/redhat-release 

Linux三剑客之awk命令

awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为"样式扫描和处理语言".它允许您创建简短的程序,这些程序读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能. awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言

Linux三剑客之一awk

之前给大家讲述了文本处理三剑客前两种,grep和sed.但是这周学习了第三种awk,感觉awk比前两个功能还要强大,相比sed也是以行进行处理,但是awk能以每一行的间隔符进行处理,用起来会更加方便.因此决定这周给大家详细介绍介绍awk. awk的基本用法:awk [options] 'pattern{action statements;..}' filename 一.options -F 指定间隔符 -v 指定变量 FS:输入字段分隔符,默认为空白字符 OFS:输出字段分隔符,默认为空白字符

Linux三剑客值awk命令详解

一.awk介绍 AWK是一种优良的文本处理工具.它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识.AWK 提供了极其强大的功能:可以进行样式装入.流控制.数学运算符.进程控制语句甚至于内置的变量和函数.它具备了一个完整的语言所应具有的几乎所有精美特性.实际上 AWK 的确拥有自己的

Linux三剑客之awk命令(转,有删减)

原文链接:https://www.cnblogs.com/ginvip/p/6352157.html awk简介 AWK 程序设计语言 ,正式定义为“样式扫描和处理语言”.它允许创建简短的程序,读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有其他的功能. awk 适合文本处理和报表生成,是三剑客的老大. 使用方法 1 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配

linux 三剑客老大-awk

1,取指定行的指定列 [[email protected] oldboy]# cat aa.txt 1 a2 b3 c4 d5 e6 f7 g8 h9 i10 j11 k12 l13 m14 n [[email protected] oldboy]# awk '{if(NR>=5 && NR<=10) print $1}' aa.txt#me:NR代表行号,&&代表并且5678910[[email protected] oldboy]# awk '{if(NR&

linux 三剑客之 awk

awk 用法: awk -F  参数用法:指定分隔符 我的源文档: more domain.log http://www.baidu.com/index.htmlhttp://www.google.com/1.htmlhttp://www.baidu.com/1.html [[email protected] ~]# awk -F  "/" '{print $3}' domain.log www.baidu.comwww.google.comwww.baidu.com[[email p

1.12-linux三剑客之awk用法详解

1.12 linux三剑客之awk用法详解 内容: 1. awk执行过程 2. awk命令格式 3. awk用法 4. awk数组 第1章 awk执行过程 一直读取到文件的最后一行 第2章 awk '找谁{干啥}' '模式{动作}' 模式 pattern   动作  action 第3章 awk中什么可以作为模式 正则表达式 比较表达式    NR>10 范围模式 特殊模式BEGIN{}和END{} awk支持正则中的特殊符号 3.1 正则表达式 测试文件/server/files/reg.tx

Linux三剑客——awk

Linux三剑客--awk DKing~共享 1.1 awk执行过程 awk读入第一行内容 判断是否符合模式中的条件NR>=2(是否让你进入大门) 如果匹配则执行对应的动作{print $0} 如果不匹配条件,继续读取下一行 继续读取下一行 重复以上过程,直到读取到最后一行(EOF:end of field) 1.2 记录和字段 record    表示记录.行           记录相当于行 field       表示区域.字段       字段相当于列 1.2.1 记录(行) awk默认