Linux三剑客

Linux三剑客

grep : 可以在文本中查找指定的字符串,逐行处理文本。

sed 流式编辑器 : 可以对文档进行非交互式增删该查,逐行处理

awk : 可以实现精确搜索并输出,逐行处理

grep命令的用法详解:

命令用法: grep 选项 条件 被处理文档

grep -E, --extended-regexp     PATTERN is an extended regular expression
#也可以用egrep进行对于扩展正则的查询
#扩展正则表达式  意为着使用使用扩展正则表达式
grep -F, --fixed-strings       PATTERN is a set of newline-separated strings
#固定字符串  将范本样式视为固定字符串的列表
grep -G, --basic-regexp        PATTERN is a basic regular expression (default)
#基本正则表达式  表示使用标准的正则表达式(默认使用)
grep -P, --perl-regexp         PATTERN is a Perl regular expression
#让grep使用perl的正则表达式 实现perl的正则的多元化,可以实现更加复杂的场景
grep -e, --regexp=PATTERN      用 PATTERN 来进行匹配操作
#指定字符串作为查找文件内容的范文样式  
#-e 与 -E 的区别: -e只能传递一个检索内容 -E可以传递多个内容
#例如 使用first查找和second
#grep -e first -e second file 
#而是用grep -E 就可以直接利用|进行传递
#grep -E first|second file
grep -f, --file=FILE           从 FILE 中取得 PATTERN
#指定文件为模版范文  可以查找符合范本的文件内容
grep -i, --ignore-case         忽略大小写
#在查找内容时候忽略大小写
grep -w, --word-regexp         强制 PATTERN 仅完全匹配字词
#强制按照模版进行查找,只查找符合条件的字词
grep -x, --line-regexp         强制 PATTERN 仅完全匹配一行
#强制按照按照模版进行查找,只查找符合条件的一行
grep -z, --null-data           一个 0 字节的数据行,但不是空行
#在需要跨行匹配的时候,-z必须要加。
还有一些常用的选项:
grep -o, --only-matching       只显示匹配PATTERN 部分的行
grep -v, --invert-match        选中不匹配的行
grep -V, --version             显示版本信息并退出
grep -n  --line-number         在显示符合模版要求的内容时,显示该列的编号
grep -v                        反转查找
grep -l  --files-with-matches  列出文件内容符合模版的的文件名称
grep -L  --files-without-match 列出文件内容不符合模版的文件名称
grep --help                    显示此帮助并退出

这里也只是列举了一些grep的常用选项,在配合上一些正则就可以实现内容的标准匹配和模糊匹配之列的,可以联合管道“|”一起使用或者利用一些其他工具在脚本中实现一些非交互式的使用。

sed命令的用法详解:

命令用法: sed 选项 条件 指令 被处理文档

sed -n			
#屏蔽默认输出
sed -r			
#支持扩展正则
sed -i 	
#对源文件进行修改
sed  'p'
#输出内容
#例: sed -n 'p' file 输出file文件的所有行
#例: sed -n '2p' file  输出file文件的第二行
#例: sed -nr '/^first|^second/p' file 输出以first或者second开头的一行
#可以配合正则表达式一起使用
sed  's'			
#对查询到的内容进行替换
#例: sed 's/2011/1234/' file  将file文件中的第一个2011替换为1234
#例: sed 's/2011/1234/2' file   将file文件中的第二个2011替换为1234
#例: sed '2s/2011/1234/' file   将file文件中第二行的第一个2011替换为1234
#例: sed 's/2011/1234/g' file  将file文件中的所有2011替换为1234
#可以配合正则一起使用
sed  'd'
#将查找到的文件进行删除
#例: sed '3,5d' file   将file文件的3~5行删除
#例: sed '/^$/d' file  ^$代表空行 将file的所有空行进行删除
#可以配合正则一起使用
还有一些常用的选项:
sed  'a'  #行下追加
sed  ‘i’  #行上添加
sed  ‘c’  #替换整行

sed是执行对文件的逐行处理可以利用选项-i对源文件进行修改i,而不仅仅实现只是查询的效果。

awk的命令详解:

命令用法: awk 命令 条件 指令 被处理文档

也可以处理前置命令利用管道而传递过来的执行结果前置命令 | awk 选项 条件 指令

awk -F  #定义分割符

指令: “print”

条件: /字符串/

内置变量

$1  第一列    $2  第二列    $3  第三列    $4  第四列

$0   所有列   NR  行号    NF   列号
例: awk '{print}' file.txt   #输出file文件的所有
例: awk '/fi/{print}'  file.txt  #输出file文件中含有fi的一行
例: awk '/^fi$/{print}' file.txt  #输出file文件中以fi开头并写以fi结尾的一行
例: awk '{print NR}' file.txt   #输出file文件的行号
例: awk '{print NF}' file.txt   #输出file文件的列号
例: awk '{print $1 "我是:" $6}' file.txt #输出常量,但是需要利用""引住

还可以利用一些运算符号进行筛选:

awk 'NR%2==0{print NR,$0}' file.txt #NR行号除于2余数等于0的行,然后输出该行的行号和所有列。

awk处理时机,可以执行额外任务。

BEGIN 任务 执行1次,读取文档之前执行

逐行任务 执行n次 ,读取文档时执行

END任务 执行1次,读取文档之后执行

例: awk -F: 'BEGIN{print "ok"} {print $1} END{print "ok"}' file.txt #会首先执行BEGIN的命令输出ok,然后在执行逐行任务输出file文件中的第一行,最后再执行END的任务输出ok。

如果可以掌握linux三剑客的使用方式,就基本可以满足在你日常的基本搜索和对于一些内容的提取修改,想要做好自动化运维就要必须要熟练的在脚本中加入三剑客,去完善简便脚本的执行过程。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值