文本处理工具——sed
1.sed的介绍
sed是一款流编辑工具,用来对文本进行过滤与替换操作,特别是当你想要对几十个配置文件做统一修改时,你会感受到Sed的魅力!Sed通过一次仅读取一行内容来对某些指令进行处理后输出,所以Sed更适合于处理大数据文件。首先,Sed通过文件或管道读取文件内容,但Sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,我们称之为模式空间(pattern space),所有的指令操作都是在模式空间中进行的,然后Sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上)
2.sed命令对字符的处理
(1)参数p 显示行
命令 | 含义 |
sed -n 5p skq | 显示文件5行 |
sed -n 3,5p skq | 显示文件3到5行 |
sed -ne '3p;5p "' skq | 显示文件第3行和第5行 |
sed -ne '5,$p "' skq | 显示文件5到最后一行 |
sed -n '/^#/p ' skq | 显示以#开头的行 |
sed -n '5,,$p ' skq |
操作如下
(2)参数d 删除
命令 | 含义 |
sed 5d skq | 删除文件第五行 |
sed '/^#/d' skq | 删除文件中以#开头的行 |
sed -ne '/^skq/!d' skq | 删除文件中出了以skq开头的行 |
sed -e '5,$d' skq | 删除文件5到最后一行 |
(3)参数a 在某一行后面添加
命令 | 含义 |
sed -e '$a hello world' skq | 在文件最后一行的后面插入hello world |
sed -e '$ahello\nworld' skq | 删除文件中以#开头的行 |
sed -e '/^#/a hello world' skq | 删除文件中出了以skq开头的行 |
(4)参数i 在某一行前面插入
sed '5ihello world' skq
(5)参数w 把符合的行写入指定的文件中
sed '/^root/w file' passwd 把passwd中以root开头的行写到file文件中
(6)参数r 整合文件中的相应行到另外的文件中
sed ’5r hahha‘ skq 将文件haha的内容整合到skq文件的第5行下面
(7)字符替换 参数a
sed ’s/a/b/g' passwd 把文件中的a替换成b
sed '/a/cb' passwd 将文件中的a换成b
练习题:写脚本文件apache.sh1111运行此脚本可以修改httpd的端口为1111
运行脚本 sh apache.sh 1111