Linux下 sed命令使用
黎晟 2020年12月26日 14:43
简单整理下上周用到的sed命令
一、sed命令
1、命令格式
sed [options] 'command' file(s)
2、选项
-
-e :直接在命令行模式上进行sed动作编辑,此为默认选项;
-
-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作;
-
-i :直接修改文件内容;
-
-n :只打印模式匹配的行;
-
-r :支持扩展表达式;
-
-h或–help:显示帮助;
-
-V或–version:显示版本信息。
2、实例
替换文本中的字符串并打印出出来:
sed 's/book/books/' linux-test.txt
-n选项和p命令一起使用表示只打印那些发生替换的行:
sed -n 's/book/books/p' linux-test.txt
直接 编辑 文件选项-i,会匹配file文件中每一行的第一个book替换为books:
sed -i 's/book/books/' linux-test.txt
全面替换标记g:
sed 's/book/books/g' linux-test.txt
当需要替换每行的第N处,可以使用 /N:
sed 's/book/books/2' linux-test.txt
当需要从每行的第N处开始替换之后所有时,可以使用 /Ng:
sed 's/book/books/2g' linux-test.txt
定界符
以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符
sed 's:test:TEXT:g'
sed 's|test|TEXT|g'
定界符出现在样式内部时,需要进行转义:
sed 's/\/bin/\/usr\/local\/bin/g'
删除操作:d命令
删除空白行:
sed '/^$/d' file
删除文件的第2行:
sed '2d' file
删除文件的第2行到末尾所有行:
sed '2,$d' file
删除文件最后一行:
sed '$d' file
删除文件中所有开头是test的行(d放在里面和外面效果一致,注意空格也算):
sed '/^test/'d file
删除文件中所有结束是test的行(d放在里面和外面效果一致,注意空格也算):
sed '/test$/d' file
参考链接:https://www.linuxprobe.com/linux-sed-command.html
二、Firewalld 命令
1、安装Firewalld命令
yum -y install firewalld
2、开机启动/禁用firewad服务
systemctl enable/disable firewalld
3、启动/关闭firewad服务
systemctl start/stop firewalld
4、查看firewad服务状态
systemctl status firewalld
二、常用命令
1、查看已经开放的service和port
firewall-cmd --list-services
firewall-cmd --zone=public --list-services# 只查看指定pubilc区域的
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports# 只查看指定pubilc区域的
firewall-cmd --list-all-zones# 查看所有区域的
2、获取活动的区域
firewall-cmd --get-active-zones
3、重新加载
firewall-cmd --reload
通常手动修改zone配置进行规则添加后,需要进行重载生效,如–permanent参数就需要reload重载; root 身份执行命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息;
4、启用某个服务/端口
firewall-cmd --zone=public --add-service=https#临时
firewall-cmd --permanent --zone=public --add-service=https #永久
firewall-cmd --zone=public --add-port=8080-8081/tcp #临时
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp #永久
如果是要删除,直接修改成remove-service或者remove-port;
5、添加拒绝某个IP访问ssh端口
firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject"
6、允许来自此IP允许通过防火墙
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" accept'
7、允许一个IP(10.0.10.1)仅能通过指定端口(8080-8090)访问到目标(10.0.10.13):
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" destination address="10.0.10.13/32" port port="8080-8090" protocol="tcp" accept'
规则说明:
rule:规则;
family:ipv4指定ipv4的地址;
source address=10.0.10.1要拒绝的IP,可以是IP或者是IP段;
service name='ssh’指定的是ssh服务 ;
drop:就是此条规则的执行方法是丢弃;
port:端口
如果要放行直接修改后面的reject为accept即可;
防火墙firewalld预定义的服务配置文件是xml文件,目录在 /usr/lib/firewalld/services/; 在 /etc/firewalld/services/ 这个目录中也有配置文件,但是/etc/firewalld/services/目录优先于 /usr/lib/firewalld/services/ 目录;
如果规则中没有参数–permanent都是即时生效的,而且reload或者重启服务后都不会再有记录;
添加了参数–permanent后需要手动reload或者重启服务才生效。 同时可以加入–zone 应用于于哪个区域的参数;
参考链接:https://blog.csdn.net/lovequanquqn/article/details/104845969