【linux】linux补充
1、防火墙
# 查看firewall服务状态 systemctl status firewalld # 开启、重启、关闭防火墙命令 service firewalld start service firewalld restart service firewalld stop # 查看防火墙规则 firewall-cmd --list-all #查看全部信息 firewall-cmd --list-ports #查看端口信息 # 开启端口 开端口命令:firewall-cmd --zone=public -add-port=80/tcp --permanent 重启防火墙:systemctl restart firewalld.service --zone #作用域 --add-port=80/tcp #添加端口,格式为端口/通讯协议 --permanent #永久生效,不然重启就失效了
2、文本处理工具
除了基本的管道命令grep还有sed和gawk命令
grep命令适合查找和匹配文本;而sed适合编辑匹配到的文本;awk适合格式化文本,对文本进行复杂处理并输出
2.1、sed命令
sed(Stream Editor)是一种流编辑器,一次处理一行内容,将行存储在模式空间(临时缓冲区),然后用sed命令处理模式空间中的内容,处理完成后将内容送入屏幕,然后清除模式空间,继续读入下一行,执行下一个循环,直到文件末尾。这个过程中不会改变文件内容(除了 -i 选项)。
命令形式:
sed [选项] [sed命令] [-f <script FILE>] [FILE]
选项
-h: 显示帮助信息 -n: 仅显示 script处理后的结果,常与sed命令p连用:sed -n 'p' test.txt 打印test.txt文件内容 -e: 直接在指令列模式上进行 sed 的动作编辑,不修改原文件,输出到终端 -i: 修改文件内容,而不输出到终端 -f filename : sed 动作写在filename 内,执行 filename 内的sed 动作 -r∶ 扩展正规表达式
常用命令
a:append #后面新增: sed -e '4 a newline' test.txt sed -e '1 a append' test.txt aaa append bbb ccc ddd eee fff
c:change #取代: sed -e '2,5c No 2-5 number' test.txt sed -e '2,5 c changed' test.txt aaa changed fff
d:delete #删除: sed -e '2,5d' test.txt sed -e '/^$/d' test.txt:删除test.txt文件空行 sed -e '2,5 d' test.txt aaa fff
i:insert #前面插入: sed -e '2i newline' test.txt sed -e '1 i insert' test.txt insert aaa bbb ccc ddd eee fff
p:print, 打印第一行:sed -n 'p' test.txt 打印最后一行:sed -n '$p' test.txt
s:substitute #替换: sed -e 's/old/new/g' test.txt sed -e 's/$/%/' test.txt:在每行末尾添加% sed -e 's/ *//g' test.txt: 删除test.txt文件空格 sed -e "4s;old;new;g" test.txt 或者 sed -e '4s/old/new/g' test.txt:替换第4行 N:将下一行添加到pattern space中,将当前读入行和用N命令添加的下一行看成“一行”
2.2、awk命令
awk是一种文本模式扫描和处理的编程语言,由 Aho, Weinberger 和 Kernighan开发。
awk功能强大,可用于数据提取和统计,常用在shell脚本中。awk逐行读入文件,以空格为默认分隔符将每行切片,切开的部分再进行后续处理。
awk [options] 'pattern action' [FILE(s)]
pattern:正则表达式
action:对匹配到的内容执行的命令(默认为输出每行内容)
$0: 整条记录(当前列) $1 - $n: 表示当前列的第n个域 FILENAME: awk浏览的文件名 BEGIN: 处理文本之前要执行的操作 END: 处理文本之后要执行的操作 NF: 浏览记录的域的个数/列数 NR: 已读的记录数/行数 FNR: 当前输入文件的记录数 FS: 设置输入域分隔符,等价于命令行 -F 选项,默认为空格“ ” awk -F: '{print $1}' test.txt 或者 awk 'BEGIN {FS = ":"} {print $1}' test.txt RS: 控制输入记录分隔符 OFS: 输出域分隔符,默认为空格“ ” ORS: 输出记录分隔符,默认为“\n” exit:匹配到第一行内容后退出:awk -F: '{print $2;exit}' test.txt ,grep使用 -m 参数
例子:
#/etc/passwd匹配root的所有行的,$0就是全部 [root@localhost ~]# sudo cat /etc/passwd | awk -F : '/root/ {print $0}' root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin #/etc/passwd第二列 [root@localhost ~]# sudo cat /etc/passwd | awk -F : 'NR==2 {print $0}' bin:x:1:1:bin:/bin:/sbin/nologin #使用 begin加入标题 [root@localhost ~]# sudo cat /etc/passwd | awk -F : 'BEGIN {print "No","User","Auth"} {print NR "|" $1 "|" $2 } END {print FILENAME}' No User Auth 1|root|x 2|bin|x 3|daemon|x #自定义输入域分割符,匹配第一个 [root@localhost ~]# cat test.txt a|b|c A|B|C [root@localhost ~]# cat test.txt | awk -F"[|]" '{print $1}' a A #自定义输入行分割符,匹配第一个 [root@localhost ~]# cat test.txt a|b|c.A|B|C [root@localhost ~]# cat test.txt | awk -v RS="." '{print $1}' a|b|c A|B|C #自定义输入行分割符、输出行分割符 [root@localhost ~]# cat test.txt | awk -v RS="." -v ORS="-" '{print $1}' a|b|c-A|B|C-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构