选择操作的行范围
sed -n '1,2p' testsed2.txt 匹配第1到2行
sed -n '/a/,/b/p' testsed2.txt 匹配从包含a的行到包含b的行
sed -n '/a/,3p' testsed2.txt 匹配从包含a的行到第3行
sed -n '/a/p' testsed2.txt 匹配包含a的行
sed -n 'p' testsed2.txt 匹配所有行
操作命令
sed '1,2p' testsed2.txt #打印第一二行
sed '1,2d' testsed2.txt #删除第一二行
sed '1,2i \test' testsed2.txt #在第一二行前分别插入一行
sed '1,2i \test\nhello' testsed2.txt #在第一二行前分别插入两行
sed '1,2a \test' testsed2.txt #在第一二行后分别插入一行
sed '1,2r test.txt' testsed2.txt #在第一二行后分别插入一个文本文件内容
sed '1,2w a.txt' testsed2.txt #将匹配行保存到新文件
sed '1,2=' testsed2.txt #将匹配行的行号显示到前一行中
sed '1,2s/a/aa/' testsed2.txt #将匹配的行进行查找替换
sed '1,2s@b@bb@' testsed2.txt #可以用其他符号代替间隔符号
选项部分
sed '1,2p' testsed2.txt
sed -n '1,2p' testsed2.txt #不显示模式空间的内容
sed -i 'a \hello world' test.txt #修改源文件
cat test.txt
sed -e 's/a/aa/g' -e 's/b/bb/i' testsed2.txt #使用-e同时支持多个操作
sed '{s/a/aa/g;s/b/bb/i}' testsed2.txt #不用-e的方式
sed -r 's/^(a|b)//' testsed2.txt#支持扩展正则表达式
练习题目
1、替换/etc/inittab中的"id:3:initdefault"一行数字为5;
sed '/^id/s/:[0-9]:/:5:/' /etc/inittab
2、删除/etc/init.d/functions的空白行;
sed -r '/^[[:space:]]*$/d' /etc/init.d/functions
3、删除/boot/grub/grub.conf文件中行首的空白字符;
sed -r 's/^[[:space:]]+//g' /boot/grub/grub.conf
4、echo一个路径给sed,通过sed取出其目录名;例如echo "/etc/sysconfig/" | sed,返回/etc;
echo "/etc/sysconfig/" | sed -r 's@/[^/]+/?$@@'