linux基础(8)-文件处理(awk 、sed、grep)

浏览: 1056

grep基本用法

格式:grep [选项] [模式] [文件]

 

选项:

-c:只显示有多少行匹配 ,而不具体显示匹配的行

-n:在每一行前面打印该行在文件中的行数

-i:在字符串比较的时候忽略大小写

-v:显示不包含匹配文本的所欲行

 

实例1

ls -l | grep -n "^d" #找到以d开头的内容

ls -l|grep -n "feigu" #找到以feigu开头的内容

image.png

awk基本用法

 格式

awk [-F field-separator] 'commands' inputfile

awk -F: 'commands' inputfile 

awk -f awk-scpript-file inputfile

 

实例1

ls -l|awk '{print 1,2}' #打印出该文件第一列和第二列的内容。注意只能是单引号。awk默认使用空格分隔符,所以省略了-F。,1,2...$n,这种方法称为域标记。

image.png

cat /etc/passwd|awk -F: '$1=="feigu" {print $0}' #第一列的值为feigu。$0表示使用所有域
cat
/etc/passwd|awk -F: '$1=="games" {print $0}' #第一列的值为games 。$0表示使用所有域 。-F表示指定分隔符

image.png

cat baidu.log|wc -l  #统计baidu.log 文件的行数

image.png

sed基本用法

sed [选项] [定址commonds] [inputfile]

sed [选项] -f scriptfile inputfile

./scriptfile inputfile(命令脚本首行:#!/bin/sed -f)

 

选项:

-n 关闭默认输出,默认将自动打印所有行

-e 多点编辑,允许多个脚本指令被执行

-r 支持扩展正则+ ? () {} |

-f 支持使用脚本

-i 直接修改原文件,慎用

定址:

定址可以是0个,1个,2个。通知sed去处理文件的哪几行。

0个,处理文件所有行

1个,处理行号所在位置的行

2个,处理被行号或正则包起来的行

 

命令:

p        打印行

d        删除行

s         替换

a         之后添加一行append

i         当前行之前插入文本-instert

 

实例1

sed -n '1p' baidu.log #打印出文件第一行

sed -n '1,3p' baidu.log #打印出文件1-3行 ,注意是逗号分隔

image.png

sed "s/python/java/g" baidu.log #将文件中python字符串替换成java字符串

注释:s表示替换命令,/my/表示匹配my,/java/表示把匹配的替换成java,/g表示 替换所有的匹配

image.png

sed "s/^/#/g" baidu.log #在每一行最前面加#号

image.png

sed "s/$/----/g" baidu.log #在每一行最后加----

image.png

相关正则

    ^ 表示一行的开头。如:/^#/ 以#开头的匹配
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如 \<abc 表示以 abc 为首的詞。
\> 表示词尾。 如 abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符
推荐 0
本文由 邬家栋 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册