SHELL用法七(Sed语句)

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地址。
原文地址:https://www.cnblogs.com/nshgo/p/12157674.html