linux中grep、sed、awk 命令的使用
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,前言Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到
千家信息网最后更新 2025年02月03日linux中grep、sed、awk 命令的使用
前言
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。
Linux 的优点:
稳定性和高效性:因为 Linux 是由 Unix 发展而来,因此 Linux 与 Unix 有许多相似之处,不只是用户接口和操作方式,Linux 还继承了 Unix 卓越的稳定性和高效性。对于使用 Linux 作为操作系统的服务器,连续运行一年不宕机是相当平常的事情。
低配置要求:Linux 对硬件的要求很低,它可以在数年前的电脑上很流畅的运行。使用 Windows,则需要不断升级机器的硬件。
免费或者少许费用:Linux 基于 GPL,因此任何人可以免费使用或者修改其中的原代码。只有在选择某些厂商制作的 Linux 的发行版时,才会需要一点点费用。
强大的支持:大量的 Linux 爱好者会进行交流讨论,并且开发分享一些好的软件,有非常开放的使用氛围。
安全性:Linux 拥有相当庞大的用户和社区支持,因此能很快发现系统漏洞,并迅速发布安全补丁。
正则表达式ifconfig |sed -n '2p' |sed 's.*inet//g' |sed 's#netmask.*$##g' #用/ # 均可 理论可用任何特殊字符替代 #sed -r 后面可跟扩展正则 扩展正则 + (.*)ifconfig |sed -n 2p |sed -r 's#^.*inet (.*) Broast.*$#\1#g' # \1 代表正则中的第一个GROUP 即(.*)里的内容ifconfig |sed -nr '2s#^.*inet (.*)net.*$#\1#gp' #合成一行ifconfig |awk 'NR==2{print $2}' #取IP地址 awk 默认分隔符是空格 取IP 最方便 ifconfig ens33| grep -o "inet [0-9.]*" |grep -o "[0-9.]*" #取IPifconfig ens33| sed -nr '2s#^.*inet ([0-9].*)netmask.*$#\1#gp'cat oldboy.txt| sed -r 's#^ .*inet(.*)netmask(.*)broadcast(.*)$^C1 \2 \3 #g' sed -r 's#(.*):(.*):(.*):(.*):(.*):(.*):(.*)$#\7 \6 \5 \4 \3 \2 \1#g' #后向引用换位置 sed最多引用9个,用awk更方便sed -n '/^$/d' #空行删除 //中写字符串sed '1,2s#C#--&-#g' # 这里&代表C C 也可以是正则表达式ls | sed 's#(^.*)haha#mv \1.jpg#g' |bash sed '1~2p's #a i d奇数行sed '2~2p's #a i d偶数行sed 's#^#head#g' #头加 sed 's#$#tail#g' # 尾加sed 's#^#test#g' #开头加testsed 's#$#test#g' #末尾加testsed多行操作 sed '2a,str' '1~2a,str' '1,10i,str' / '1,2d' '5~10d' / '1~3p' '1,3p'#sed 在 a i d 的时候 必须有相应的行,空文件会出错,也就是说 空文件无法直接用sed 添加 sed '/new/d' # 删除包含new的行 sed命令中 -n p sed 中 -n p 基本都是成对出现awk -F ":" '{print $1":"$2":"$3":"$4":"$5":"$6":"$7"------"$1}' passwd #这里是全文操作awk -F "5:5|28" 'NR==5{print $2}' #5:5 或 28 作为分隔符 两个字符串 这种格式最好用| 即使单个字符也用| 否则字符串造成歧义ll | awk '{if($2>5) print $0}' $0 表示整行sed -i 's#pp#dd#g' 1.txt 将1.txt 文件中的pp 改成dd 立即生效 -i 代表直接写入文件
#在LINUX 中,所有的文本处理 都是读取一行(进内存) 处理一行 输出一行 直接循环结束
正则表达式 字符串用"" 以防问题
^.* 以任意字符开头.*$ 以任意字符结尾^word 以word 开头word$ 以word 结尾[^word] 括号里的是取反. 只代表一个字符 "是字符就匹配上了 所有除空行" 空格和空行是不一样的\ 转义* 重复前面0或多个字符.* 所有[abc] 匹配集合内任意一个字符[^abc] 匹配集合内除abc 的任意一个字符[0-9] [a-z] [A-Z]a\{n,m\} 重复a 至少n次到至多m 次 ## a\{n,m\} 这种形式必须用""引起来 且""两边没有空格 ,否则会报错a\{n,\} a\{,m\} a\{n\}重复n次egrep sed -r 可以不使用\转义## 了解 扩展正则表达式 grep -E egrep+ 一个或一个以上 (*是0或多)? 0或一个前面字符| 表示同时过滤多个字符串 egrep "sshd|systemd"() 后向引用 参考(.*) \1grep -n -i 不区分大小写 -o 只显示匹配到的内容 不输出整行find /test -type f -name "*.sh" |xargs sed -i 's#old#new#g' ! 叹号可取反 -a and -o or 也可同时写 sed -i 's#old#new#g' *.sh#awkNR $0整行 $1 $2 $NF最后一列 NF 为全行列数$(NF-1)倒数第二行#awk原理 一行是一个记录#RS表示一个记录的结束 FS表示一个区域的分隔 $NF 为最后一个区域ifconfig |awk 'BEGIN{RS=":"}''{print $1}' 以:为代替回车 为换行符#正则 条件(NR==2) 范围(NR==2,NR==5)2到5# $1~/正则开始/,$3~/正则结束/awk -F "[ :]+|\t+" '{print $2}' grade 以1个或多个 :(空格或冒号)或1或多个tab制表符 作为分隔符 #BEGIN模块 END模块seq 1 100 |awk '{a+=$1}''END{print a}' 1加到100cat passtemp |awk '{sub(/x/,"ppp")}''{print $0}' awk替换awk '$1~/lisi/{print $0}' grade grade文件匹配$1 包括lisi的行 并打印出行awk '$4~/(5|3)$/{print $0}' grade 匹配 5 或 3结尾awk '$1~/^[l|W]/{print $0}' grade 匹配l 或 W 开头 用[] 和()都可为了和正则匹配 强烈建议用[]awk -F "\t" '$3~/^9/{print $0}' grade#不包含:!,在awk中不包含可以使用! 表示#在awk中,可以用来替换的有三个函数:sub gsub gensubsub(r, s [, t]) r /找谁/ s "替换成什么" [] 替换那个部分的awk '$1~/zhan/{gsub(/zhang3/,"ccccc",$1);print $0}' grade##注意 /zhang3/ "ccccc" 以及多个命令间用; 分号
字符
正则
系统
一行
多个
字符串
文件
操作系统
代表
开头
用户
空格
表达式
支持
分隔符
空行
发展
命令
安全
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
郑州软件开发公司实力
bar添加数据库向导
成华区于素秋网络技术工作室
如何修改数据库文件组大小
数据库管理安全
重庆企业软件开发价格表
qtp 连接db2数据库
杭州盛迈网络安全有限公司
计算机网络技术专业评价
hmcl服务器怎么装mod
数据库营销分析技术
plsql数据库笔试面试
数据库添加考勤记录
渝中网络安全周
网络安全建设技术规范
小程序如何批量更新数据库数据
软件开发和网络设计
向日葵被控端显示服务器错误
四川app软件开发哪家便宜
app软件开发的相关知识
普陀区立体化软件开发使用方法
access建立数据库打包
重庆企业软件开发价格表
机器人计划软件开发
为什么uk安装连接服务器失败
敏捷软件开发的看法
网络安全发对网络一词的定义
数据在数据库怎么存放的
阿里云免备案服务器
软件开发和电子商务哪个好学