grep用法:
作用:grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,过滤数据流或文件内容。
语法格式:grep [选项] [条件表达式] 目标文件
常用选项:
-i 忽略大小写
-n 显示行号
-v 反身匹配
-E 扩展正则表达式
-e 查找指定字符
-c 统计个数
例3:grep参数的使用
[root@node-1 ~]# cat /proc/meminfo |grep -e Mem -e Cache -e Swap
MemTotal: 3863532 kB
MemFree: 2129012 kB
MemAvailable: 3360472 kB
Cached: 1399964 kB
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
[root@node-1 ~]# grep -v root passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
##统计系统中能登录的用户的个数
[root@node-1 ~]# cat /etc/passwd |grep -c bash$
8
##截取ip地址
[root@node-1 ~]# ip a |grep inet |grep eth0 |grep -o "inet[^/]" |grep -o "[0-9.]"
192.168.26.71
[root@node-1 ~]# egrep "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
21.2 sed流编辑器
2.1一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用。可删除(delete)、改变(change)、添加(append)、插入(insert)、合并、交换文件中的数据行。默认情况下不会对文件修改,只是在屏幕上显示出来
语法:sed [options] ‘command‘ file(s)
选项:
-n 抑制自动打印pattern space,sed默认输出全部,-n用于取消默认输出;
-i 编辑文件;
-r 支持扩展正则表达式;
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
[root@node-1 ~]# sed -i ‘2s/static/dhcp/g‘ ip ##指定特定行号2行替换
[root@node-1 ~]# cat ip
IP1=dhcp
IP2=dhcp
IP0=static
##常用禁用selinux的命令
[root@node-1 ~]# sed -i ‘7s/enforcing/disabled/g‘ /etc/selinux/config && setenforce 0
2.3删除:
语法:sed ‘/表达式/d‘ 文件
[root@ns ~]# vim ip ##添加空行
[root@node-1 ~]# cat ip
IP1=dhcp
IP2=dhcp
IP0=static
[root@node-1 ~]# sed -i ‘/^$/d‘ ip && cat ip ##删除空行并显示删除后的内容--常用
[root@node-1 ~]# sed -i ‘/IP1/d‘ ip && cat ip ##删除包含IP1的行
IP2=dhcp
IP0=static
[root@node-1 ~]# sed -i ‘/^IP2/d‘ ip && cat ip ##删除以IP2开头的行
[root@node-1 ~]# sed -i ‘d‘ ip && cat ip ##删除所有行
2.4增加
语法:sed ‘/表达式/a "需要添加的文字"‘ 文件
添加行注意:
?命令i(insert插入),在当前行前面插入一行
?命令a(append附加),在当前行后面添加一行
##在第三行之后插入内容
[root@node-1 ~]# sed -i ‘3a IP3=static‘ ip && cat ip
IP1=static
IP2=static
IP0=static
IP3=static
#在第三行之前插入内容
[root@node-1 ~]# sed -i ‘3i IP=static‘ ip && cat ip
IP1=static
IP2=static
IP=static
IP0=static
IP3=static
2.5查找并显示:
语法:sed -n ‘/表达式/p‘ 文件
##查看第二行
[root@node-1 ~]# sed -n ‘2p‘ ip
IP2=static
21.2 cut命令
语法: cut(选项)(参数)
选项
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
例4:
[root@node-1 ~]# cut -d : -f 1-3 passwd
root:x:0
bin:x:1
daemon:x:2
补充知识:
脚本检查语法是否有错:
bash -v aa.sh #查看脚本aa.sh是否存在语法错误
bash -x aa.sh #查看脚本aa.sh详细的执行过程
原文:https://blog.51cto.com/450955/2485210