\# linux命令sed,awk,grep

2018-10-19  本文已影响246人  Nickier

---------------

#################

Nickier

2018-10-19

#################

---------------

# linux命令sed,awk,grep


sed

简介

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

使用格式

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明

1.-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。

2.-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。

3.-h或--help 显示帮助。

4.-n或--quiet或--silent 仅显示script处理后的结果。

5.-V或--version 显示版本信息。

动作说明

举例

# 在文件testfile中的第4行后面添加一行newline
sed -e 4a\newLine testfile
1539951436066.png
# 将testfile的内容列出来同时打印行号,使用sed '4d'删除第四行
nl testfile  | sed '4d'
1539951717784.png
# 显示第5到7行nl testfile  | sed -n '5,7p'
1539952207807.png
# 搜索关键词hello的行,除了输出所有含,还输出匹配行
nl testfile  | sed '/hello/p'
1539952524900.png
# 搜索关键词hello的行,加上-n参数,只输出匹配行
nl testfile  | sed -n '/hello/p'
1539952719298.png

awk

简介

awk是一个非常好用的数据处理工具。相较于sed常常一整行处理,awk则比较倾向于一行当中分成数个“字段”处理。

使用格式

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

参数说明

举例

# 输出第二列,默认分隔符为空格
awk '{print $2}' 1.txt
# 以o为切割,并输出第二列
awk -F"o" '{print $2}' 1.txt
1539954613575.png
# 使用内建变量,以o为分隔符,输出
awk 'BEGIN{FS="o"} {print $1,$2}'   1.txt
1539955394226.png
# 输出第一列大于2的行
nl 1.txt | awk '$1>2'
1539955600249.png
# 从文件中找出length大于12的行
awk 'length>12' 1.txt 

1539955958785.png

grep

简介

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。

参数

-E :开启扩展(Extend)的正则表达式。

-i :忽略大小写(ignore case)。

-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

-n :显示行号

-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

-o :只显示被模式匹配到的字符串。

--color :将匹配到的内容以颜色高亮显示。

-A n:显示匹配到的字符串所在的行及其后n行,after

-B n:显示匹配到的字符串所在的行及其前n行,before

-C n:显示匹配到的字符串所在的行及其前后各n行,context

# 取出含有字符创linux的行
grep linux 1.txt 
# 取出含有字符创linux的行,并显示行号
grep linux 1.txt -n
# 取出不含有world的行并显示行号
grep world 1.txt -nv
1539957795629.png

总结

awk、sed、grep更适合的方向:

关于awk内建变量个人见解,简单易懂

解释一下变量:

变量:分为内置变量和自定义变量;输入分隔符FS和输出分隔符OFS都属于内置变量。

内置变量就是awk预定义好的、内置在awk内部的变量,而自定义变量就是用户定义的变量。

自定义变量的方法

上一篇下一篇

猜你喜欢

热点阅读