1、SHELL编程Sed语句案例实战
1)SHELL编程四剑客之二的Sed工具,主要是用于Linux系统文本文件的编辑、
打印的,也称为非交互模式编辑器(vi|vim交互模式编辑器),Sed工具的语法
格式:
sed -option(参数) ‘Command’(命令) file(文件对象)
Option参数:-i(修改)、-n(静默模式)、-e(扩展)、-l、-b、-c;
Command命令:p(打印)、d(删除)、N(多行)、G、D;
2)SHELL编程四剑客Sed工具案例操作一,基于Sed工具将list.txt文件中的用户
名root改为jfedu,命令如下:
sed s/jfedu/root/g list.txt sed 's#jfedu#root#g' list.txt sed -i 's#jfedu#root#g' list.txt sed -e '3s/2/100/g' -e '4s/3/100/g' list.txt sed '3s/2/100/g;4s/3/100/g' list.txt sed '3,$s/11/100/g' list.txt3)替换jfedu.txt文本中old为new: sed 's/old/new/g' jfedu.txt
4)打印jfedu.txt文本第一行至第三行:
sed -n '1,3p' jfedu.txt
5)打印jfedu.txt文本中第一行与最后一行:
sed -n '1p;$p' jfedu.txt
6)删除jfedu.txt第一行至第三行、删除匹配行至最后一行:
sed '1,3d' jfedu.txt sed '/jfedu/,$d' jfedu.txt
7)删除jfedu.txt最后6行及删除最后一行:
for i in `seq 1 6`;do sed -i '$d' jfedu.txt ;done sed '$d' jfedu.txt
8)删除jfedu.txt最后1行:
sed '$d' jfedu.txt
9)在jfedu.txt查找jfedu所在行,并在其下一行添加word字符,a表示在其下一
行添加字符串:
sed '/jfedu/aword' jfedu.txt
10)在jfedu.txt查找jfedu所在行,并在其上一行添加word字符,i表示在其上
一行添加字符串:
sed '/jfedu/iword' jfedu.txt
11)在jfedu.txt查找以test结尾的行尾添加字符串word,$表示结尾标识,&在
Sed中表示添加:
sed 's/test$/&word/g' jfedu.txt
12)在jfedu.txt查找www的行,在其行首添加字符串word,^表示起始标识,
&在Sed中表示添加:
sed '/www/s/^/&word/' jfedu.txt
13)多个sed命令组合,使用-e参数:
sed -e '/www.jd.com/s/^/&1./' -e 's/www.jd.com$/&./g' jfedu.txt
14)多个sed命令组合,使用分号“;”分割:
sed -e '/www.jd.com/s/^/&1./;s/www.jd.com$/&./g' jfedu.txt
15)Sed读取系统变量,变量替换:
WEBSITE=WWW.JFEDU.NET
Sed “s/www.jd.com/$WEBSITE/g” jfedu.txt
16)修改Selinux策略enforcing为disabled,查找/SELINUX/行,然后将其行
enforcing值改成disabled、!s表示不包括SELINUX行:
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config sed -i '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config
17)合并上下两行,也即两行合并:
sed 'N;s/ / /' jfedu.txt
18)打印list.txt文件的行号,命令操作如下:
for i in `seq 1 $(cat list.txt |wc -l)`;do sed -n "${i}s/^/&$i) /p" list.txt ;done sed = list.txt |sed 'N;s/ /) /g'
2、SHELL编程Grep语句案例实战
1)Find是Linux操作系统文件和目录的路径检索、查询工具,而Grep是Linux
系统下文本文件内容检索或者匹配工具,Grep称为全局正则表达式检索工具,
在企业中被广泛的采用。
2)Grep工具的语法格式:grep -option(参数) ‘word’(关键词) file
(文本文件);
Option参数:-a(文本方式)、-c(统计)、-i(忽略大小写)、-n(行号)、
-v(反选)、-o(仅匹配)、-w(词组)、-A(匹配之后)、-B(匹配之
前)、-C(匹配前后);3)Grep企业案例实战一,查找/etc/passwd文件中是否存在www用户信息,
命令操作如下:
grep root /etc/passwd grep "root" /etc/passwd grep -w "^root" /etc/passwd grep -i "root" /etc/passwd
4)Grep企业案例实战二,ifconfig看到网卡信息,只查看IP地址所在行信息,
命令操作如下:
ifconfig|grep netmask ifconfig|grep -w inet ifconfig|grep -w 255 ifconfig|grep -E "172|127" ifconfig|grep -E "([0-9]{1,3}.){3}[0-9]{1,3}"
#创建三个文件,并且往文件中分别写入不同的代码;
for i in `seq 1 3`;do touch jf$i.txt;echo jfedu jf$i >jf$i.txt;echo cat jf$i.txt;cat jf$i.txt;echo ----------;done
5)通配符类型详解:*
0个或者多个字符、数字; ? 匹配任意一个字符; # 表示注解; | 管道符号; ; 多个命令连续执行; & 后台运行指令; ! 逻辑运算非; [ ] 内容范围,匹配括号中内容; { } 命令块,多个命令匹配。
6)正则表达式详解:
* 前一个字符匹配0次或多次; . 匹配除了换行符以外任意一个字符; .* 代表任意字符; ^ 匹配行首,即以某个字符开头; $ 匹配行尾,即以某个字符结尾; (..) 标记匹配字符; [] 匹配中括号里的任意指定字符,但只匹配一个字符; [^] 匹配除中括号以外的任意一个字符; 转义符,取消特殊含义; < 锚定单词的开始; > 锚定单词的结束; {n} 匹配字符出现n次;{n,} 匹配字符出现大于等于n次; {n,m} 匹配字符至少出现n次,最多出现m次; w 匹配文字和数字字符,不匹配符号; W w的反置形式,匹配一个或多个非单词字符,匹配 符号; 单词锁定符; s 匹配任何空白字符; d 匹配一个数字字符,等价于[0-9]。
7)常用GREP工具企业演练案列:
grep -c "test" jfedu.txt 统计test字符总行数; grep -i "TEST" jfedu.txt 不区分大小写查找TEST所有的行; grep -n "test" jfedu.txt 打印test的行及行号; grep -v "test" jfedu.txt 不打印test的行; grep "test[53]" jfedu.txt 以字符test开头,接5或者3的行; grep "^[^test]" jfedu.txt 显示输出行首不是test的行; grep "[Mm]ay" jfedu.txt 匹配M或m开头的行; grep "K…D" jfedu.txt 匹配K,三个任意字符,紧接D的行; grep "[A-Z][9]D" jfedu.txt 匹配大写字母,紧跟9D的字符行; grep "T{2,}" jfedu.txt 打印字符T字符连续出现2次以上的行; grep "T{4,6}" jfedu.txt 打印字符T字符连续出现4次及6次的行; grep -n "^$" jfedu.txt 打印空行的所在的行号; grep -vE "#|^$" jfedu.txt 不匹配文件中的#和空行;grep --color -ra -E "db|config|sql" * 匹配包含db或者config或者 sql的文件; grep --color -E "<([0-9]{1,3}.){3}([0-9]{1,3})>" jfedu.txt 匹配 IPV4地址。