linux三剑客之sed

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                                ##显示最后一行


猜你喜欢

转载自blog.csdn.net/u010489158/article/details/80778201