一、格式
1、命令行格式
$sed [options] ‘command’ file(s)
options:-e;-n(一般和-p打印命令配合使用);-i(修改文件内容并保存)
command:行定位(正则)+sed命令(操作)
2、脚本格式
sed -f scriptfile file(s)
3-1、基本操作命令-p命令
p:打印相关的行(注意需要和-n配合使用,否则会重复打印输出)
例子:输入文本所有的行 sed -n 'p' passwd
sed-行定位
定位一行:x;/pattern/
例子:打印第十行 sed -n '10p' passwd
打印包含字符'home'的行 sed -n '/home/p' passwd
定位多行:x,y;/pattern/,x;/pattern1/,/pattern2/;x,y!;
例子:打印第5至第10行 sed -n '5,10p' passwd
打印包含字符串'uucp'开始的行至第40行 sed -n '/uucp/,40p' passwd
打印包含字符串'uucp'开始至包含字符串'haldaemon'结束的行 sed -n '/uucp/,/haldaemon/p' passwd
打印不在第10行至第20行范围内的行 nl passwd |sed -n '10,20!'
定位间隔几行:first~step
例子:打印从第一行开始间隔两行打印输出 nl passwd |sed -n '1~2p'
3-2、基本操作命令-行处理命令
a(新增行)/ i(插入行)
c(替代行)
d(删除行)
例子:在第五行后插入"=============" nl passwd |sed '5a============='
在第五行前插入"=============" nl passwd |sed '5i============='
将第10行替换为"=============" nl passwd |sed '5c============='
将第五行删除 nl passwd |sed '5d'
3-3、基本操作命令-行处理命令-s替换命令(核心,必须掌握)
s(替代):分隔符/,#等
g(全局):替换标志
例子:将文本中每行匹配的第一个nologin替换为hahah sed 's/nologin/hahah/' passwd
将文本中的':'全部替换为',' sed 's/:/,/g' passwd
3-4、sed高级操作命令-{}、n
{}:多个sed命令,用;分开
-n:读取下一个输入行(用下一个命令处理)
例子:删除文本第20至30行然后将文本中的'nologin'替换为'哈哈' nl passwd |sed '{20,30d;s/nologin/哈哈/}'
3-5、sed高级操作命令-&使用及案例
&:替换固定字符串
例子:将文本中的字符串'nologin'替换为'nologin123' sed 's/nologin/&123' passwd
3-6、sed高级操作命令-()符号案例
\(\):替换某种(部分)字符串(\1 \2)
例子:获取passwd文件中的user、uid、gid
3-7、sed高级操作命令-rw命令使用
-r:复制指定文件插入到匹配行(不改变文件内容)
-w:复制匹配行拷贝到指定文件里
例子: 将文件123.txt内容读到abc.txt的第一行后
sed '1r 123.txt' abc.txt
例子: 将abc.txt文件的第一行拷贝123.txt文件 sed '1w 123.txt' abc.txt
(123.txt文件内容会改变,内容为abc.txt的第一行内容)
3-8、sed高级操作命令-q命令使用
q:退出sed
例子:读取到第十行退出sed:
nl passwd |sed '10q'