Lesson37 Shell的文本处理正则表达式(sed——行编辑器)
1. sed是什么
sed:功能强大的流式文本编辑器
sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等
2. d 模式操作
删除选择的行
sed '/^UUID/d' /etc/fstab
#删除以UUID开头的行
sed '/^#/d' /etc/fstab
#删除#开头的行
sed '/^$/d' /etc/fstab
#删除空行
sed '1,4d' /etc/fstab
#删除1-4行
sed '/^UUID/d' /etc/fstab’
#删除UUID开头的行
3. c 模式操作
sed '/^UUID/c\hello \nwestos /etc/fstab
#将以UUID开头的行修改为hello, 换行,westos
4. w 模式操作
sed ‘^#/w /mnt/westosfile’fstab
#将fstab中#开头的行写入到/mnt/westosfile
cat /mnt/westosfile
#查看文件内容
sed '6r westosfile' fstab
#将westosfile内容写入到fstab第六行
sed '/^#/=' fstab
#给#开始的所有行加上行号
5. a 模式操作
sed '/^UUID/a helloword' fstab
#给当前行的下一行添加helloword
6. i 模式操作
sed '/^UUID/i helloword' fstab
#给当前行的上一行添加helloword`
7. p 模式操作
sed -n '/^UUID/p' fstab
#打印以UUID开始的行
sed -n '/#/p' fstab
#打印所有包含#的行
sed -n '2,6p' fstab
#打印2-6行内容
sed -n '2,6!p' fstab
#打印2-6行之外的其他行
8. 其他用法
sed -n -e '/^UUID/p' -e '/^UUID/=' fstab
#打印UUID开始的行,并且增添行号。-e在需要同时执行多个编辑或者替换命令时使用
sed -n -e '/^UUID/p ; /^UUID/=' fstab
#这里;和-e功能相同
sed -f rule fstab
#使用文件修改fstab
sed 's/^\//###/g' fstab
# 将所有开头的/替换为###,其中s是替换,g表示为所有匹配的行,没有g只替换第一处匹配的行
sed 's@^\/@###@g' fstab
#@和/功能相同
sed '1,5s/#/@@@/g' fstab
#将1-5行中#替换为@@@
sed 'G' passwd
#给文件每行下加空行
sed '$!G' passwd
#最后一行之外的所有行下加空行
sed '=' passwd
#文件每行前一行增加行号
sed '=' passwd | sed 'N;s/\n//g'
#文件每行上一行加行号,并且取消回车符,N表示一次处理两行
sed '=' passwd | sed 's/\n//g'
#不加N处理一行
sed -n '$p' passwd
#显示最后一行
N: 提前加载下一行的内容到sed程序
/\不是贪婪模式