首页 > 系统服务 > 详细

linux 初探三剑客

时间:2020-03-03 22:56:34      阅读:59      评论:0      收藏:0      [点我收藏+]

一. grep文本过滤工具

1. 语法格式

grep    [options]     [pattern]    [file]

2. 选项说明

参数选项 解释说明
-v 排除不包括匹配文件的内容

-n

显示匹配行及行号
-i 不区分大小写(只适用于单字符),默认区分大小写
-c 只统计匹配的行数,注意不是次数
-E 使用扩展的egrep命令
--color=auto 为grep匹配过的字符串添加颜色
-w 只匹配过滤的单词
-o 只输出匹配的内容 

3. 使用范例

1)grep -v "oldboy"  test1.txt   

   #过滤不包含oldboy的字符,默认是以行为单位,排除包含过滤字符的行。

2)grep -n "oldboy" test1.txt

  #输出包含oldboy字符的行,并显示出行号。

3)grep -i “alex” test2.txt

  #使用-i参数不区分大小写过滤alex

4)grep -Ei --color=auto  "oldboy|alex"  test2.txt

  #不区分大小写同时过滤oldboyalex,并增加颜色显示。

5)grep -c “oldboy” test2.txt

  #计算匹配oldboy字符串的数量。

6grep -o “oldboy” test2.txt

  #只输出匹配的内容。

7)grep -w “oldboy” /etc/passwd

  #只匹配过滤的单词,如果不加-w,则与过滤单词相似的行业会被显示出。

二. sed字符流编辑器

1. 语法格式

sed [选项] [sed内置命令字符] [输入文件]

2. 选项和内置命令说明                                

参数选项 解释说明
-n 取消默认的sed输出,常与sed内置命令的p连用
-i 直接修改文件的内容而不是输出到终端。

                                                                                                                                    

sed内置命令字符 解释说明
a append 在指定的行后追加一行或多行文本
d delete 表示删除匹配行的文本
i insert 在指定的行前插入一行或多行文本
p print 表示打印匹配行的内容
s/regexp/replacement/g
替换,后替换前,g表示全局替换
N 不会清空模式空间的内容,并且从输入文件中读取下一行,追加到模式空间中

3. 使用范例

1)sed ‘2a 106,dandan,CSO‘ persons.txt

  #persons.txt文件的第二行后追加一行内容106,dandan,CSO

  #如果a参数还成i则是在行前插入106,dandan,CSO

  #如果要在2行后追加多行,则内容A和内容B之间要使用/n换行;

2)sed ‘2d‘ person.txt

  #删除person文件中的第二行;

3)sed ‘2,5d‘ person.txt

  #删除person文件中的第二到第五行;

4sed ‘s#zhangyao#dandan#g‘  person.txt

  #person.txt文件中的所有zhangyao替换成dandan

5)sed -n ‘2p‘  person.txt

  #打印person.txt的第二行内容,这里一定要加-n参数,否则会默认打印出文件所有内容;

6)sed ‘N;s#\n#=#g‘ test.txt

  将转换如下两种格式;

  aaaaaa

  bbbbb

  aaaaaa

  bbbbb

  aaaaa=bbbbb

  aaaaa=bbbbb 

三. awk 基础入门

1. 语法格式

awk   [option]    ‘pattern{action}‘    file

2. 参数选项说明

参数选项 解释说明
-F 指定字段分隔符
-v 定义或修改一个awk的内部变量

3. 使用举例

1)awk  ‘NR==5‘ jet.txt

  #打印显示第5行内容

2)awk  ‘NR==2,NR==6‘ jet.txt

  #打印显示第2行到第6行的内容

3awk  ‘{print NR,$0}‘  jet.txt

  #用awk实现每行内容之前加上行号

4awk  ‘NR==3,NR==6 {print NR,$0}‘  jet.txt

  #用awk实现显示第三行到第六行内容之前加上行号

5)awk  -F “:” ‘{print $1,$3,$NF}‘   jet.txt

  #显示jet文件的第一列,第三列,最后一列

6)awk‘{gsub("/sbin/nologin","/bin/bash",$0);print $0}‘ jet.txt

  #把文件中的/sbin/nologin替换成为/bin/bash

  #gsub函数的格式如下:

  gsub("替换对象","替换成什么内容",哪一列)

  ①gsub与后面的括号之间不能有空格;

  ②"替换对象","替换成什么内容",哪一列之间要用逗号分隔开;

  ③替换对象和被替换对象需要用“”包起来,用逗号隔开;

  ④最后一列可以省略,相当于写上了$0$0代表整行内容;

7)ifconfig eth0 | awk -F "(addr:) | (  Bcast:)" ‘NR==2{print $2}‘    或    ifconfig eht0 | awk -F "[ :]+"  ‘NR==2{print $4}‘

  #提取ifconfig中的IP地址

8awk -F "/" ‘{print $3}‘ jet.txt  | sort |  uniq -c

  #取出jet文件中的域名,并排序,然后去重计数; 

linux 初探三剑客

原文:https://www.cnblogs.com/wangzengyi/p/12405195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!