小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
sed
sed是一种支持正则表达式的可交互式流编辑器(stream editor), 脚本中修改文本或者文本替换的最佳工具(文本流编辑器)
语法命令格式
sed [选项] sed 编辑命令(可以多个) 输入文件shell 命令 | sed [选项] sed编辑命令sed [选项] -f sed脚本文件 输入文件
常用选项
-n:只显示匹配处理的行(否则会输出所有)(取消默认的输出)
[root@localhost tmp]# sed -n '1,4p' ip_show.log
2018-01-28 10:06:22
2018-01-28 10:06:23 查看IP成功
2018-01-28 10:06:24 修改IP成功
2018-01-28 10:47:37 查看IP成功
[root@localhost tmp]# sed -n '4p' ip_show.log
2018-01-28 10:47:37 查看IP成功
-e:执行多个编辑命令时(一般用;代替)
-i:直接在文件中进行修改,而不是输出到屏幕
-r:支持扩展正则表达式
-f:从脚本文件中读取内容并执行(文件中的编辑命令每行一个,不用;隔开)
常用编辑命令
p:打印匹配行 print
d:删除指定行 delete
a:在匹配行后面追加 append
i:在匹配行前面插入 insert
c:整行替换
r:将文件的内容读入 read
w:将文本写入文件 write
s:字符串替换(匹配正则表达式)substitution
练习
-
sed去掉接在命令行后面的注释
sed 's/#.*//' tmp.txt -
sed取出/etc/passwd文件的第一列
sed -r 's/(^[[:alnum:]]+)(.*)/\1/' /etc/passwd -
sed将PATH环境变量中的冒号换成换行
echo $PATH |sed 's/:/\n/g' -
sed将PATH环境变量斜杠/换成斜杠\
echo $PATH | sed 's/\//\\/g‘echo $PATH | sed ‘s#/#\\#’(分割符可以自己指定) -
sed修改SELINUX配置文件从开启变成禁用
sed –i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
-
去掉/etc/passwd文件中第二个字段的x
方法一:
sed -r 's/(^[[:alnum:]]+)(:)(x)(.*)/\1\2\4/' /etc/passwd方法二:
sed 's/:x:/::/' /etc/passwd -
只显示ifconfig的ip地址
方法一:
ifconfig -a | sed -r -n 's/[^0-Z]+//;s/inet addr://;s/Bcast:[0-9].[0-9](.*)//;s/Mask(.*)//;/^[0-9]/p'方法二:
ifconfig | sed -n -r 's/^[^0-Z]+//;s/(inet addr:)([0-9]+).([0-9]+).([0-9]+).([0-9]+)(.*)/\2.\3.\4.\5/p'