Linux文本过滤命令grep、awk、sed
grep的使用:
一、grep一般格式:
grep [选项] 基本正则表达式 [文件]
这里的正则表达式可以为字符串。在grep命令中输入字符串参数时,最好将其用双引号括起来。调用变量时也可以使用双引号。在调用模式匹配事,应使用单引号。
二、grep常用选项:
-c只输出匹配行的计数。
-i不区分大小写(只用于单字符)。
-h查询多文件时不显示文件名。
-l查询多文件时只输出包含匹配字符的文件名。
-n显示匹配行及行号。
-s不显示不存在或无匹配文本的错误信息。
-v显示不包含匹配文本的所有行。
三、常用选项的使用:
1、 查询多个文件:
$grep “hello” *.doc
num.doc:hello
sum.doc:hello world
说明在num.doc 和sum.doc中有字符串“hello“。
2、 行匹配:
$grep -c “123” *.doc
num.doc:2
sum.doc:2
说明在num.doc 和sum.doc中有字符串“123“各为两行。
3、 显示满足匹配模式的所有行数:
$grep –n “123” *.doc
num.doc:1:hao 123
num.doc:2:hao 123
sum.doc:2:hao 123
sum.doc:4:hao 1234
4、 显示所有不包含“123“的行:
$grep -v “123” *.doc
num.doc:hello
num.doc:world
sum.doc:hello world
sum.doc:sui yue
5、 精确匹配:
如第三点,匹配“123”时,结果返回了“1234”的其它字符串。
$grep -n “123\>” *.doc
num.doc:1:hao 123
num.doc:2:hao 123
sum.doc:2:hao 123
6、 大小写敏感:
缺省情况下,grep是大小写敏感的,如果要查询大小写不敏感的字符串,必须
使用-i选项。
$grep -i “just” *.doc
num.doc:Just
num.doc:just
四、grep和正则表达式
1、模式范围:
$ grep ‘48[34]’ mydata.doc
此命令在mydata.doc中匹配字符串“483”和“484”。
2、 不匹配行首:
$ grep ‘^[^48]’ mydata.doc
此命令在mydata.doc中匹配除4或者8开头的行。
3、 设置大小写:
$ grep ‘[Ss]ept’ mydata.doc
此命令在mydata.doc中匹配字符串“Sept”和“sept”。
4、匹配任意字符:
$ grep ‘a…z’ mydata.doc
此命令在mydata.doc中匹配字符串以字符a开头和字符z结尾,中间为任意三个字符。
5、 模式出现的机率
$ grep ‘1\{2,\}’ mydata.doc
此命令说明数字1至少出现两次
awk的使用:
一、awk的调用格式:
awk的调用格式有三种:
第一种是命令行的方式,如下:
awk [-F field-separator] ‘commands’ input-file
[-F]域分隔符,是可选的,awk使用空格作为缺省的域分隔符。
第二种方法是将awk命令插入到一个文件,并使awk程序可以执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。
第三种方法是将所有的awk命令插入一个单独文件,然后调用:
awk –f awk-script-file input-file
二、动作和模式
任何awk语句都有模式和动作组成。模式部分决定动作语句何时触发及触发事件。
模式包括两个特殊字段BEGIN和END.,BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文件开始执行,END语句用来在awk完成文本浏览动作后打印输出文本中输出和结尾状态标志。实际动作在大括号内指明。
三、域和记录
awk执行时,其浏览域标记为$1,$2 ….$n.。这种方法称为域标识。
1、保存awk输出
第一种方法:
$awk ‘{print $0}’ mydata.txt >newfile.txt
显示屏上不会输出结果。
第二种方法:
$awk ‘{print $0}’ mydata.txt | tee newfile.txt
输出到文件中,同时显示在显示器上。
2、使用标准输入
第一种方法:使用awk脚本输入文件格式
$myawk.awk inputfile.txt
第二种方法:使用重定向
$myawk.awk < inputfile.txt
第三种方法:使用管道
$inputfile.txt | myawk.awk
3、打印所有记录
$awk ‘{print $0}’ myfile.txt
由于没有模式部分,只有动作部分,动作必须用花括号括起来。
Lisi 25 wuhan
Wangjian 33 shanghai
Caiming 55 shenzhen
4、打印单独记录
要用逗号分隔域
$awk ‘{print $1,$2}’ myfile.txt
Lisi 25
Wangjian 33
Caiming 55
5、打印报告头
$awk ‘BEGIN {print “Name Age\n******************“} {print $1”\t”$2}’ mfile.txt
Name Age
***************
Lisi25
Wangjian 33
Caiming 55
6、打印信息尾
$awk ‘BEGIN {print “Name \n****** “} {print $1 } END {“end of report\n”}’ mfile.txt
sed的使用:
一、sed调用格式
sed调用格式有三种:
第一种命令行方式:
sed [option] ‘command’ inputfile
command要加单引号,也允许加双引号。
第二种使用sed脚本文件:
sed [option] –f sed-script-file inputfile
第三种使用第一行具有sed命令解释器的sed脚本文件:
sed-script-file [option] inputfile
二、sed选项:
n 不打印:sed不写编辑行到标准输出,缺省为打印所有行。P命令可以用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入选项。
f 如果正在调用sed脚本文件,使用此选项。此选项通知sed脚本文件支持所有的sed命令。
三、sed常规用法:
1、 保存sed 输出
$ sed ‘command’ inputfile > outfile
2、 sed在文件中查找文本的方式
sed浏览文件时,默认从第一行开始,有两种方法定位文本:
第一种:使用行号,可以用简单数字或是一个行号范围。
第二种:使用正则表达式。
Sed定位文本的一些方式,如下:
x x表示行号。
x,y 表示行号范围从x到y。
/pattern/ 查找包含模式的行。
x,/pattern 通过行号和模式查询匹配行。
x,y! 查找不包含指定行号x到y的行。
3、 sed编辑命令
p 打印匹配行
= 显示文件行号
a\ 在定位行号后附加拳文本信息
i\ 在定位行号后插入拳文本信息
d 删除定位行
c\ 用拳文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制ASCII代码造价的控制字符
{} 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句。
4、 使用p显示行
$sed -n ‘2p’ myfile.txt
Hello world!
-n选项,显示打印定位行。
5、 打印范围
$sed -n ‘1,3p’ myfile.txt
Hao 123
Hello world!
Ni hao ma?
打印1到3行。
6、 打印模式
$sed -n ‘/123/’p myfile.txt
Hao 123
7、 在指定行号匹配模式
$sed -n ‘5,/Hao/’p myfile.txt
Hao ma?
参考:
http://blog.csdn.net/u010666884/article/details/51381947(以上内容转自此篇文章)
http://blog.csdn.net/halazi100/article/details/42266885
http://blog.csdn.net/hzylmf/article/details/13712753
http://blog.csdn.net/u011068702/article/details/60882902
Linux文本过滤命令grep、awk、sed的更多相关文章
- linux相关(find/grep/awk/sed/rpm)
如何查找特定的文件: find :在指定目录下查找文件 find -name "filename" :从当前目录查找文件 find / -name "filename&q ...
- 【linux】linux命令grep + awk 详解
linux命令grep + awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- Linux查找命令:grep,awk,sed
grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
- LINUX系统下的shell命令---grep、sed、awk
1)grep文本过滤命令 1.grep基本认识 (Global search regular expression and print out the line全局搜索研究正则表达时并显示出 ...
- linux 三剑客命令(grep,sed ,awk)
grep 命令 :强大的文本’搜索’工具 1.grep -n 'word' file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号. 2 ...
- 【Linux】linux中文本操作利器grep,awk,sed
grep命令 grep(global search regular expression)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来.平时搜索文本中内容的时候是非常方 ...
- Linux三剑客-grep || awk || sed
grep是一个强大的文本搜索工具 命令格式: grep [option] pattren file -a 将二进制文档以文本方式处理 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便 ...
- 获取文本中你须要的字段的 几个命令 grep awk cut tr sed
1,grep 2,awk 3,cut 4,tr 5,sed 实例1 获取本地IP地址 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v ine ...
随机推荐
- 电脑显卡4种接口类型:VGA、DVI、HDMI、DP
电脑显卡全称显示接口卡(Video card,Graphics card),又称为显示适配器(Video adapter),显示器配置卡简称为显卡,是个人电脑最基本组成部分之一.对于显卡接口类型,主要 ...
- java安全提交笔记【xmind图片】
- hexo 添加标签
--- title: title #文章標題 date: 2016-06-01 23:47:44 #文章生成時間 categories: "Hexo教程" #文章分類目錄 可以省略 ...
- Hexo安装和配置
Hexo安装和配置 1. Git安装和设置 github brew install git #Mac电脑使用brew安装 sudo apt-get install git #Ubuntu系统使用这 ...
- Java常用实体类
System类 访问系统属性 - 遍历 package org.zln.usefulclass.system; import java.util.Properties; /** * Created b ...
- uoj185 [ZJOI2016]小星星 【dp + 容斥】
题目链接 uoj185 题解 设\(f[i][j]\)表示\(i\)为根的子树,\(i\)号点对应图上\(j\)号点时的方案数 显然这样\(dp\)会使一些节点使用同一个节点,此时总的节点数就不满\( ...
- DP———1.最大子连续子序列和
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- spring in action 学习笔记十:用@PropertySource避免注入外部属性的值硬代码化
@PropertySource的写法为:@PropertySource("classpath:某个.properties文件的类路径") 首先来看一下这个案例的目录结构,重点看带红 ...
- Linux下目录的权限详解
在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容.普通文件大家都了解,这里说说目录的情况. 对于目录来说,执行位的作用是控制能否进入或者通过该目录,而不是控制 ...
- Ubuntu14连接MySql报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'”
起因:我在Ubuntu14 64位系统中安装mysql后,后来通过mysql -u用户名 -p密码 的命令连接 Mysql数据库时,报错"can't connect to local mys ...