1、sed命令
sed command parameter
-n:使用案件模式,只在屏幕列出通过sed特殊处理的行
-e:用多条sed命令操做输入行
-f:指定sed脚本的文件名,直接将sed的动做写在文档内
-r:支持正则表达式语法
-i:直接修改读取的文件内容,不输出到终端
sed command
a:新增
c:取代
d:删除
i:插入
p:列印
s:取代,可搭配正则表达式
通用命令eg:
1.(p命令)以行为单位,显示文件的某些行内容,通常会和 -n 一块儿使用
#打印test.txt文件的第一行
sed -n '1p' test.txt
#打印test.txt文件的2~5行
sed -n '2,5p' test.txt
#打印打印test.txt文件的最后一行($)
sed -n '$p' test.txt
#查找包含command所在的行并打印
sed -n '/command/p' test.txt
#打印test.txt文件的第1到匹配command的行
sed -n '1,/command/p' test.txt
#打印test.txt文件的第1到匹配command的行,并打印行号(
{=;p})
sed -n '1,/command/{=;p}' test.txt
#打印test.txt文件的除第1到匹配command外的其余行行,并打印行号(
!取反)
sed -n '1,/command/!{=;p}' test.txt
2.(d命令)以行为单位,删除文件的某些行内容
#删除test.txt文件的第一行,并显示
sed '1d' test.txt //(对文件没有真正删除,如需删除,需增长-i 参数)
#删除test.txt文件的2~5行
sed '2,5d' test.txt
#删除test.txt文件的最后一行(
$)
sed '$d' test.txt
#删除空白行
sed '/^$/d' test.txt
#查找包含command所在的行并删除
sed '/command/d' test.txt
#统计文件行数
sed -n '$=' test.txt
3.(a/i命令)在文件中增长行
#在第n行前增长一行(
i)
sed '1i test' test.txt
#在第n行后增长一行(
a)
sed '1a test' test.txt
#增长多行内容(\n)
sed '1i test\ntest\ntest' test.txt
4.(c命令)以行为单位替换
#第n行替换为新的内容
sed '1c test' test.txt
#第n1到n2行替换为新的内容
sed '1,3c test' test.txt
5.(s命令)替换一行中的某部分
#sed 's/要替换的字符串/新的字符串/g'
sed 's/t/d/g' test.txt //将test1.txt文件里的 t 替换成 d
注意:g参数起全局的做用,带上g参数,搜索全部的待替换字符串并替换;不带g参数,匹配到每行的第一个待替换字符串完成替换并进入下一行;
sed 's/t/d/4g' test.txt
“要替换的字符串”能够用正则匹配
如在test.txt里加入一行
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
#取本机IP
cat test.txt |grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast:.*$//g'
#在匹配command行的行首添加#字符串
sed '/command/s/^/#/' test.txt
#在匹配command字符前增长test
sed 's/command/test &/' test.txt
#在匹配command行的行尾增长test字符串
sed '/command/s/$/ test/' test.txt
#在每行的开头添加test字符串
sed 's/^/test /' test.txt
#在每行的行尾增长 end
sed 's/$/ end/' test.txt
6.(参数-e)多点编辑
#删除1~3行,并将test替换为空
sed -e '1,3d' -e 's/test//g' test.txt
7.(r 命令)读文件内容
#将一个文件中的内容加到当前文件的匹配r:读文件的下一行
sed '/r:读文件/r rtest.txt' test.txt
8.(w命令)写文件内容
#将当前文件(test.txt)中包含“w:写文件”的行写到wtest.txt文件中(会新建文件,覆盖原文件内容)
sed '/w:写文件/w wtest.txt' test.txt
9.(y命令)字符转换
#将字符a、c、d、i、p、s、r、w分别转换为A、C、D、I、P、S、R、W
sed 'y/acdipsrw/ACDIPSRW/' test.txt
10(q命令)退出
#打印完第10行后退出sed
sed '10q' test.txt
11.(&标记)已匹配字符串标记
&对应于以前匹配到的字符串
#匹配每一个单词,添加[ ]
sed 's/\w\+/[&]/g' test.txt
12.(\1标记)子串匹配标记\1
#匹配test后,取其后的第一个数字
sed 's/test\([0-9]\)/\1/' test.txt
13.打印奇数行或偶数行
#奇数行
sed -n 'p;n' test.txt
sed -n '1~2p' test.txt
#偶数行
sed -n 'n;p' test.txt
sed -n '2~2p' test.txt
14.sed 引用变量
当sed命令里面没有默认的变量时需把单引号改为双引号
sed "s/test/$name/" test.txt
当sed命令里面有默认的变量时,那本身定义的变量须要加单引号,且sed里面的语句必须用单引
($a表示在最后一行后)
sed '$a '$name'' test.txt