Linux三大剑客,awk,sed,grep

  • sed 工具

    [root@vagrant-centos65 ~]# sed [-nefr] [动作]

参数:
-n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者操作)才会被列出来
-e:直接在命令行模式上进行 sed 的动作编辑
-f:直接将 sed 的动作支持写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作
-r:sed 的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)
-i:直接修改读取的文件的内容,而不是由屏幕输出
动作说明: [n1[,n2]]function
n1, n2:不见得会存在,一般代表选择进行动作的行数,举例说,如果我的动作是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为]”

function 有下面这些参数:
a :新增,a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
c :替换,c 的后面可以接字符串,这些字符串可以替换 n1,n2之间的行
d :删除,因为是删除,所以 d 后面通常不接任何参数
i :插入,i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)
p :打印,也就是将某个选择的数据打印出来。通常 p 会与参数 sed -n 一起运行
s :替换,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是。

  • awk工具
[root@vagrant-centos65 ~]# awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

awk后面接两个单引号并加上大括号{}来设置想要对数据进行的处理动作。awk可以处理后续接的文件,也可以读取来自前个命令的 standard output 。但如前面所说,awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或 [tab] 键。

  • grep

grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:

-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 ‘搜寻字符串’ 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!
–color=auto :可以将找到的关键词部分加上颜色的显示喔!在关键字的显示方面,grep 可以使用 --color=auto 来将关键字部分使用颜色显示。 这可是个很不错的功能啊!但是如果每次使用 grep 都得要自行加上 --color=auto 又显的很麻烦~ 此时那个好用的 alias 就得来处理一下啦!你可以在 ~/.bashrc 内加上这行:『alias grep=‘grep --color=auto’』再以『 source ~/.bashrc 』来立即生效即可喔! 这样每次运行 grep 他都会自动帮你加上颜色显示啦


查看自己电脑IP测试案例
[root@vagrant-centos65 ~]# ifconfig eth0 |grep Bcast |cut -d ":" -f2|cut -d " " -f1
192.168.191.2
[root@vagrant-centos65 ~]# ifconfig |grep Bcast |awk -F'[ :]+' '{print $4}'
192.168.191.2
[root@vagrant-centos65 ~]# ifconfig |grep "inet addr:" |grep -v "127.0.0.1" |cut -d: -f2 |awk '{print $1}'
192.168.191.2
[root@vagrant-centos65 ~]# ifconfig -a |grep inet |grep -v 127.0.0.1 |grep -v inet6|awk '{print $2}' |tr -d "addr:"
192.168.191.2
[root@vagrant-centos65 ~]# ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
192.168.191.2

猜你喜欢

转载自blog.csdn.net/qq_42992919/article/details/94561408