Unix文本处理工具之awk
Unix命令行下输入的命令是文本,输出也都是文本。因此,掌握Unix文本处理工具是很重要的一种能力。awk是Unix常用的文本处理工具中的一种,它是以其发明者(Aho,Weinberger和Kernighan)的名字首字符命名的,是一种基于模式匹配检查输入然后将期望的匹配结果处理后输出到屏幕的文本数据处理工具。
1、awk命令格式
awk ‘模式 {操作}’ 文件1 文件2 ……
awk命令的工作过程是这样的:对于每一个输入文件,逐行对其进行检查,如果该行和awk命令参数的‘模式’部分匹配,则对该行执行命令参数‘{操作}’部分所代表的操作。下面是一个简单的例子:
$cat awk_test.txt
1 a a,b,d,f
2 b alsdjf,apple,kdjf
3 c 163.2.201.1
4 d www.google.com
5 e http://blog.csdn.net/xia7139
$awk 'NR==1{print}' awk_test.txt
1 a a,b,d,f
上面的例子中,用awk命令输出了awk_test.txt文件的第一行,其中命令的模式部分所用的NR是awk命令的内建变量,代表文件的行号。这样,便可以对所有行号为1的行进行打印输出。
2、常用的内建变量
| 变量 | 含义 |
| NR | 当前处理行的行号 |
| FS | 字段分隔,默认为空格或TAB |
| $n | 当前处理行的第n个字段 |
| $0 | 当前处理行的全部内容 |
这里要解释下字段的含义:在awk的使用中,字段分隔符将文件的一行分隔为各个部分,每一个部分称为一个字段,从左到右分别为第1个字段,……,第n个字段,其中,第0个字段是指这一整行。字段分隔符如果没有特殊指定,则默认为空格或tab制表符。
3、几个例子及其输出
下面的例子都是对上文中的awk_test.txt文件的操作。
按行号操作:
(1)打印文件的1-3行
$awk 'NR==1,NR==3{print}' awk_test.txt
1 a a,b,d,f
2 b alsdjf,apple,kdjf
3 c 163.2.201.1
(2)打印文件的第1行和第3行
$awk 'NR==1||NR==3{print}' awk_test.txt
或者是
$awk '(NR==1)||(NR==3){print}' awk_test.txt
1 a a,b,d,f
3 c 163.2.201.1
(3)只打印奇数行(偶数行)
$awk '(NR%2)==1{print}' awk_test.txt
1 a a,b,d,f
3 c 163.2.201.1
5 e http://blog.csdn.net/xia7139
$awk '(NR%2)==0{print}' awk_test.txt
2 b alsdjf,apple,kdjf
4 d www.google.com 使用正则表达式:
(1)打印包含2的行
$awk '/2/{print}' awk_test.txt
2 b alsdjf,apple,kdjf
3 c 163.2.201.1
(2)打印以com结尾的行
$awk '/com$/{print}' awk_test.txt
4 d www.google.com 指定分隔,输出指定字段:
(1)打印第1-3行的第一个字段和第三个字段
$awk 'NR==2,NR==3{print $1,$3}' awk_test.txt
1 a,b,d,f
2 alsdjf,apple,kdjf
3 163.2.201.1
(2)指定分隔符为.,输出第二个字段为csdn的行的第三个字段和整行
$awk -F. '$2=="csdn"{print $3,$0}' awk_test.txt
net/xia7139 5 e http://blog.csdn.net/xia7139
Unix文本处理工具之awk的更多相关文章
- awk、sed、grep三大shell文本处理工具之awk的应用
awk 1.是什么 是一个编程语言.支持变量.数组.函数.流程控制(if...else/for/while) 单行程序语言. 2.工作流程 读取file.标准输入.管道给的数据,从第一行开始读取,逐行 ...
- Linux Shell 文本处理工具集锦--Awk―sed―cut(row-based, column-based),find、grep、xargs、sort、uniq、tr、cut、paste、wc
本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...
- AWK文本处理工具(Linux)
AWK文本处理工具(Linux) PS:刚开始实习,就给了个处理百万级别数据的任务,以前学过SHELL的一些东西sed/awk之类的处理,但是也没有具体的应用,只是在10几行10几列的小数据操作过,所 ...
- Pyp 替代sed,awk的文本处理工具
Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反 ...
- Linux - awk 文本处理工具一
AWK AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一:awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命 ...
- 三大文本处理工具grep、sed及awk的简单介绍
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- 【Linux】 字符串和文本处理工具 grep & sed & awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
- Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk 老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...
- Linux 文本处理工具grep,sed,awk
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
随机推荐
- 安卓开发06:布局-线性布局 LinearLayout
LinearLayout把视图组织成一行或一列.子视图能被安排成垂直的或水平的.线性布局是非常常用的一种布局方式. 请看一个布局例子: <LinearLayout xmlns:android=& ...
- c语言,enum
在设置错误代号时,使用enum比宏更好看. #include <stdio.h> typedef enum { retOK = 0, errComInterruption = 0x1000 ...
- 搭建Windows SVN服务器及TortoiseSVN使用帮助和下载
搭建Windows SVN服务器: 用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行 ...
- WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果?
原文:WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果? 我们想对WCF具有一定了解的人都会知道:在客户端通过服务调用进行服务调用过程中,服务代理应该及时关闭.但是如果服务的代理不等得到及时的 ...
- 中转server
中转传输概要设计 中转传输的消息架构为模拟MFC的消息架构,请參考我的上一篇文章. 1. 概述 中转server採用事件驱动的方式,与socket结合.其层次例如以下: 在事件驱动层中,将相关消息发送 ...
- Oracle基础知识笔记(10) 约束
表尽管建立完毕了,可是表中的数据是否合法并不能有所检查,而假设要想针对于表中的数据做一些过滤的话,则能够通过约束完毕,约束的主要功能是保证表中的数据合法性,依照约束的分类,一共同拥有五种约束:非空约束 ...
- 3.跟我学solr---使用solrj加入索引
上一章讲了怎么使用solr admin向solrserver加入索引,Solr 是一个独立的企业级搜索应用server.它对外提供类似于 Web-service 的 API 接口. 用户能够通过 ht ...
- Winform - 全屏显示
//全屏显示 this.WindowState = FormWindowState.Maximized;
- 一个问题:关于类型转换Type Cast(汇编讲解 as 语法)
问题如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...
- Hadoop2.0/YARN深入浅出(Hadoop2.0、Spark、Storm和Tez)
随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发 ...