sed
sed是一种包括在所有unix平台的轻量级的流编辑器,sed只要是用来将数据进行选取,替换,删除,新增
sed的用法
sed [选项]'[动作]'文件名 选项: -n 一般情况下sed会把所有的数据输出,-n仅显示更改的数据 -e 允许对输入的数据应用多条sed命令编辑 -i 直接修改原文件中的数据 动作: a 追加,2a表示在第二行后面添加一行 c 替换 i 插入,在行前面 d 删除 p 打印 s 字符串替换 sed '2,4d' file #删除2-4行的数据 sed '2a hello' file #在第二行后面追加hello sed '2i hello\nihao' file #在2行前面加两行 sed '2c hello' file #替换第二行数据 sed 's/旧字符/新字符/g' 文件名 sed'3s/75/77/g' file #将第三行的75替换为77 sed '3s/77//g;4s/77//g' file #将3,4行的数据替换成空
P(Print):打印
sed -n '/\:/p' file ###显示有冒号的一行 sed -n '/^a/p' file ###以a开头 n:(取消默认输出) sed -n '/a$/p' file ###a结尾 sed -n '3,5p' file ###显示3-5行 sed -n '3,5!p' file ###除了3-5行都显示
D(Delete):删除
sed '/^#/d' file ###删除以#开头的行 sed '1,4d' file ###删除1-4行 sed '/^a/!d' file ###不删除以a开头的行 sed '/^$/d' file ###删除空行cat -E file可以看到每行都是以$结尾
A(Append):附加
sed '/^abc/a hello ' file ###在file中^abc开头的下面一行加入hello \n:回车
C(Replace):重置
sed '/^a/c dream' file ###以a开头的行改成dream
W(Write):写
sed '/^a/w /mnt/file1' file ###把file中以a开头的内容写入file1文件中 sed '6r /mnt/file1' file ###把file1内容写入到file的第6行
通过脚本改变Apache端口
vim chage_http.sh #!/bin/bash PORT=`grep ^Listen /etc/httpd/conf/httpd.conf` sed "/^Listen/c Listen $1" -i /etc/httpd/conf/httpd.conf systemctl restart httpd
sed 's/#//g' file ###将所有的#替换成空 sed 's/\///g' file ###将/替换成空 sed '2s/:/##/g' file ###将第二行的:替换成## sed '2,4s/:/##/g' file ###将2-4行的:替换成## sed '/a/,/b/s/:/##/g' file ###从a到b,中间的:替换成## sed 's/:/##/' file ###将每一行的首个:替换成## sed 's/:/##/g' file ##将所有的:替换成## sed 'G' file ##每一行后添加空行 sed '$!G' file ##除了最后一行 每一行添加空行 sed '=' file | sed 'N;s/\n//' ##将行号和内容放在一起 sed -n '$p' file ##显示最后一行