grep,sed,awk 个人总结
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,正则表达式ifconfig |sed -n '2p' |sed 's.*inet//g' |sed 's#netmask.*$##g' #用/ # 均可 理论可用任何特殊字符替代 #sed -r 后
千家信息网最后更新 2025年12月01日grep,sed,awk 个人总结
正则表达式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安全错误
数据库的锁怎样保障安全
软件测试需要会软件开发吗
服务器和网络哪个安全
桂林信息安全培训网络安全培训
java ssl服务器
app免费服务器
程湾镇网络安全工作责任制度
中专学历学软件开发好就业吗
数据库还原备份只有部分
信封模板软件开发
十大网络安全提案
软件开发年终总结2016
网络安全法发布号
备份数据库的sql语句
无法显示mysql数据库
高科技互联网片头
数据库中的文件在哪里找
获取数据库表子段
软件开发c 面试题
何谓主动连接服务器
特雅丽拼接屏服务器
漳州市政务网络安全预警
字典如何导入数据库
保护网络安全的常用
天龙八部逍遥城服务器
加强维护数据库英语作文
软件开发包括什么专业
软件开发 评标办法
网络技术开发价目表
宜兴加工软件开发规范
vrar软件开发