Linux常用基本命令:三剑客命令之-awk基础用法
awk是一个超级强大的文本格式化处理工具,他与grep, sed命令被成为linux 三剑客命令
三剑客命令的特点:
grep:只要用来匹配和查找文本
sed: 编辑匹配到文本
awk: 格式化文本,可以对复杂文本进行处理
awk语法格式:awk [options] 'program' file1 file2 ...
其中,program包含两部分:'pattern{action}',最常用的两个action就是print和printf,如果学过c语言,你就知道,他们专门由于格式化字符串, awk把处理过的格式文本,用他们输出
1,不使用任何选项,模式和action, awk就相当于输出整个文件,awk的工作方式是:逐行扫描. 默认情况下 扫描行的时候,用空格分割列,输出的时候也是空格
使用print这个动作,打印文件所有的内容.
ghostwu@dev:~/linux/sed$ cat ghostwu.txt
this is ghostwu
how are you
fine thank you
bye bye
ghostwu@dev:~/linux/sed$ awk '{print}' ghostwu.txt
this is ghostwu
how are you
fine thank you
bye bye
2,把ls -l 的结果通过管道交给awk逐行扫描处理,$1打印每一行的第一列,$3:每一行的第三列,$9就是第9列了...
ghostwu@dev:~/linux/sed$ ls -l
total
-rw-rw-r-- ghostwu ghostwu 5月 : ghostwu.txt
ghostwu@dev:~/linux/sed$ ls -l | awk '{print $1}'
total
-rw-rw-r--
ghostwu@dev:~/linux/sed$ ls -l | awk '{print $3}' ghostwu
ghostwu@dev:~/linux/sed$ ls -l | awk '{print $9}' ghostwu.txt
ghostwu@dev:~/linux/sed$ cat ghostwu.txt
this is ghostwu
how are you
fine thank you
bye bye
ghostwu@dev:~/linux/sed$ awk '{print $3}' ghostwu.txt
ghostwu
you
you
3,$0表示整行,$NF表示当前行分割后的最后一列,他们都是内置变量
ghostwu@dev:~/linux/sed$ awk '{print $0}' ghostwu.txt
this is ghostwu
how are you
fine thank you
bye bye
ghostwu@dev:~/linux/sed$ awk '{print $NF}' ghostwu.txt
ghostwu
you
you
bye
4,一次列出多列,使用逗号隔开要输出的列
ghostwu@dev:~/linux/sed$ cat ghostwu.txt
this is ghostwu
how are you
fine thank you
bye bye
ghostwu@dev:~/linux/sed$ awk '{print $1, $3}' ghostwu.txt
this ghostwu
how you
fine you
bye
文件最后一行,没有第三列,所以没有输出任何东西
5,也可以加上自定义的列
ghostwu@dev:~/linux/awk$ ls
ghostwu.txt
ghostwu@dev:~/linux/awk$ awk '{print "name:" $1, "age:" $2, "sex:" $3}' ghostwu.txt
name:ghostwu age: sex:man
name:zhangsan age: sex:woman
name:lisi age: sex:woman
ghostwu@dev:~/linux/awk$ cat ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
6,数字前面有美元符号的,是awk的内置变量,不能加引号,否则会把他们当做字符串原样输出
ghostwu@dev:~/linux/awk$ awk '{print "$1"}' ghostwu.txt
$
$
$
ghostwu@dev:~/linux/awk$ awk '{print $1}' ghostwu.txt
ghostwu
zhangsan
lisi
ghostwu@dev:~/linux/awk$ awk '{print "first-cloumn:"$1}' ghostwu.txt
first-cloumn:ghostwu
first-cloumn:zhangsan
first-cloumn:lisi
7,以下两种写法,都表示输出整行
ghostwu@dev:~/linux/awk$ awk '{print $0}' ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
ghostwu@dev:~/linux/awk$ awk '{print}' ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
8,BEGIN模式,在AWK扫描行之前,执行
在扫描行之前,打印aa,bb
ghostwu@dev:~/linux/awk$ awk 'BEGIN{print "aa", "bb"}' ghostwu.txt
aa bb
如果胜省略文件,BEGIN模式依然会执行
ghostwu@dev:~/linux/awk$ awk 'BEGIN{print "aa", "bb"}'
aa bb
BEGIN有什么用?我们可以在扫描文件的行之前,为每个列都加上表头信息
ghostwu@dev:~/linux/awk$ cat ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
ghostwu@dev:~/linux/awk$ awk 'BEGIN{print "name", "age", "sex"} {print $1, $2, $3}' ghostwu.txt
name age sex
ghostwu man
zhangsan woman
lisi woman
9,扫描每一行,在每一行的后面加上自定义的列
ghostwu@dev:~/linux/awk$ awk 'BEGIN{print "name", "age", "sex"} {print $1, $2, $3} {print "展昭", 20, "man"}' ghostwu.txt
name age sex
ghostwu man
展昭 man
zhangsan woman
展昭 man
lisi woman
展昭 man
10, 扫描完所有的行,在加上自己自定义的列信息,可以用END模式
ghostwu@dev:~/linux/awk$ awk 'BEGIN{print "name", "age", "sex"} {print $1, $2, $3} END{print "展昭", 20, "man"}' ghostwu.txt
name age sex
ghostwu man
zhangsan woman
lisi woman
展昭 man
Linux常用基本命令:三剑客命令之-awk基础用法的更多相关文章
- Linux常用基本命令:三剑客命令之-sed
sed是一个很强大的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作 格式:sed [option] [command] [file] 常用命令: a ∶新 ...
- Linux常用基本命令:三剑客命令之-awk数组用法
AWK的数组用法跟javascript类似. 1,定义数组 awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[0]} ...
- Linux常用基本命令:三剑客命令之-awk动作用法(1)
1,多个动作,怎么写? ghostwu@dev:~/linux/awk$ cat host.txt name ip地址 host1 192.168.1.1 host2 192.177.81.1 hos ...
- Linux常用基本命令:三剑客命令之-awk模式用法(2)
1,正则模式,在/etc/passwd中 过滤出使用/bin/bash的用户 ghostwu@dev:~/linux/awk$ awk -v FS=":" 'BEGIN{print ...
- Linux常用基本命令:三剑客命令之-awk模式用法(1)
再次回顾一下,awk基本语法格式: awk [options] 'Pattern {Action}' file1 file2 ··· 之前的文章有讲过两种Pattern(BEGIN, END),本文, ...
- ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘
本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...
- Linux常用基本命令(less)
转: Linux常用基本命令(less) LESS:跟more命令的功能类似,都是用于分页显示内容,但是他的性能比more更高,功能比more更丰富,他读取文件是按需加载 格式: less [opti ...
- Linux 常用基本命令及应用技巧
需要pdf 版 联系我 我的文件中有目录一.Linux 的常用基本命令................................................................. ...
- Linux中使用sed命令或awk命令修改常规配置文件
一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...
随机推荐
- lucene的suggest(搜索提示功能的实现)
1.首先引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-suggest --> <!-- ...
- Python序列结构
python中常用的序列结构由列表.元组.字典.字符串.集合等,列表.元组.字符串等有序序列以及range对象均支持双向索引 是否有序 序列结构 是否是可变序列 有序序列 元组 不可变序列 有序序列 ...
- 使用Python对Twitter进行数据挖掘(Mining Twitter Data with Python)
目录 1.Collecting data 1.1 Register Your App 1.2 Accessing the Data 1.3 Streaming 2.Text Pre-processin ...
- maven理论基础
Maven介绍 Maven是一个Java项目管理和构建工具 Maven使用pom.xml定义项目内容,并使用预设的目录结构 在Maven中声明一个依赖项可以自动下载并导入classpath Maven ...
- 音视频编解码——RGB与YUV格式转换
一.RGB模型与YUV模型 1.RGB模型 我们知道物理三基色分别是红(Red).绿(Green).蓝(Blue).现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色. ...
- react-router V4中的url参数
概述 之前写过react在router中传递数据的2种方法,但是有些细节没有理清楚,现在补上,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料:stackoverflow react rou ...
- process(进程)
进程 指的是执行中程序的一个实例(instance). 新进程由fork() 与 execve() 等系统调用起始,然后执行,直到下达exit()系统调用为止. 操作系统内核里,称为调度器(sched ...
- HoloLens开发手记 - 使用HoloLens模拟器 Using HoloLens emulator
首先下载HoloLens模拟器 HoloLens模拟器运行在没有真机的情况下在你的PC上测试应用,属于HoloLens开发工具系列.模拟器使用了Hyper-V虚拟机.通常通过传感器获取的人体和环境输入 ...
- Spark 的 Shuffle过程介绍`
Spark的Shuffle过程介绍 Shuffle Writer Spark丰富了任务类型,有些任务之间数据流转不需要通过Shuffle,但是有些任务之间还是需要通过Shuffle来传递数据,比如wi ...
- [转]KMP算法理解及java实现
这大概是我看的最好懂的KMP算法讲解了,不过我还只弄懂了大概思想,算法实现我到时候用java实现一遍 出处:知乎 https://www.zhihu.com/question/21923021/ans ...