sed:流编辑器
sed -n '/pattern/command' file
-n 显示pattern查找出的匹配行(不加-n会显示原来的行与匹配的行)
-e 直接在命令行进行sed编辑
sed -n -e '/aaaaa/p' -e '/AAAA/p' file (p是打印的意思)
-f 有时上文中红色的长度过长 可以把上文红色放在文件file1中
sed -n -f file1 file
-i 直接修改原文件内容
sed -i 's/love/hate/g;p' file (把love改为hate 红色部分为固定格式)
pattern的匹配模式:
10command 匹配到第10行
sed -n '15p' file
10,20command 从第10行开始,到20行结束
sed -n '10,20p' file
10,+5command 匹配从第10行开始,到16行结束
sed -n '10,+2p' file
/pattern/command 匹配到pattern的行
sed -n '/love/p' file
/pattern1/,/pattern2/command 匹配从pattern1行开始,到匹配到pattern2的行结束
sed -n '/python/,/php/p' file
10,/pattern1/commad 从第10行开始,到匹配到pattern1行结束
sed -n '10,/php/p' file
/pattern1/,10command 匹配到pattern1的行开始,到第10行匹配结束
sed -n '/python/,10p'
command命令:
查询:p 打印
删除:d
增加:a (append) 行后增加 sed -i '/php/a content' file 在匹配的行后添加content
i (infront)行前增加 sed -i '/php/,/python/i content' file 在所有匹配到的行前添加content
r (read) 把r后的文件file1的内容追加到匹配行的后面 sed -i '/php/r file1' file
w (write) 把匹配到的行写入到file2中 sed -i '/php/w file2' file
修改:s
在每行中把php替换为python (只替换一个) sed -i 's/php/python/' file
在每行中把php替换为python (g全部替换) sed -i 's/php/python/g' file
在每行中把php替换为python (替换第2个) sed -i 's/php/python/2' file
在每行中把php替换为python (替换从第二个以后的匹配内容) sed -i 's/php/python/2g' file
在每行中把php替换为python (不区分大小写 and 全部替换) sed -i 's/php/python/ig' file
反向引用:(类似于php中正则的后向引用)
sed -i 's/\(python.\)/\1s/g' file 把类似python1、python2、python3 后面添加s字符。 括号内的字符串是不变的,\1用于引用匹配的字符串,所以\1和小括号的方式可以进行部分替换。
两个条件 : sed -n '/^#/p;/^$/p' my.cnf.bak 查询#开头或者空行的行 ,用分号隔开
sed -i '/^#/d;/^$/d' my.cnf.bak 删除