格式:
sed 选项 '命令' 要修改的文件
sed 选项 -f 包含命令的文件 要修改的文件
选项:
-e 在命令行上进行sed动作编辑,默认选项
-i 直接修改文件内容,跳过缓冲区
-n 只打印匹配的行
-r 支持扩展表达式
常用:
sed -i "s/$releasever/8/g" Centos-8.repo 将后面repo文件的版本参数$releasever替换为8
sed -i "s/4K/1M/g" fio.fuse.randread.job 将文件中的4K替换为1M
sed -i -e 's|^GRUB_CMDLINE_LINUX=\"|GRUB_CMDLINE_LINUX=\"cgroup.memory=nokmem |g' /etc/default/grub 将文件中的GRUB_CMDLINE_LINUX="替换为GRUB_CMDLINE_LINUX="cgroup.memory=nokmem 即在原来的赋值内容中添加cgroup.memory=nokmem
sed '/^$/d' file 删除空白行
sed 's/book/books/' test.txt 把test.txt文件中的book替换为books输出到屏幕,只是输出内容改变,源文件内容不变
sed -n 's/book/books/p' test.txt 用-n选项和p命令只打印那些发生替换的行,只是输出内容改变,源文件内容不变
sed -i 's/book/books/' test.txt 用-i选项将第一行的第一个book替换为books,源文件内容改变
sed -i 's/book/books/g' test.txt 用-i选项和g命令将全文的book替换为books,源文件内容改变
sed -i '1,4s/book/books/' test.txt 将1-4行每一行的第一个book替换为books,源文件内容改变
sed -i '1,4s/book/books/2g' test.txt 将1-4行每一行第二个book开始至行尾的book替换books,源文件内容改变
sed -i '1,4s/book/books/4' test.txt 将1-4行每一行第四个book替换为books,源文件内容改变
echo sksk/sksk/sksk/sk/sksk | sed 's/\///g' 将文本中的/删除,或者使用其它定界符:echo sksk/sksk/sksk/sk/sksk | sed 's#/##g' echo sksk/sksk/sksk/sk/sksk | sed 's$/$$g'
sed '2d' file 删除第2行
sed '2,$d' file 删除2行到末尾所有行
sed '$d' file 删除文件最后一行
sed '/^test/'d file 删除文件所有test开头的行
echo this is a test line | sed 's/\w\+/[&]/g' 正则表达式\w\+匹配每一个单词,以[&]格式进行输出,&表示匹配到的每个单词
示例:获取ip地址和广播地址
[root@server1 ~]# ip addr|sed -nr 's#^.*inet (.*)/24.*brd (.*) scope.*$#ipaddress:\1 broadcast:\2#gp'
ipaddress:192.168.88.128 broadcast:192.168.88.255
浙公网安备 33010602011771号