grep,sed,awk 个人总结
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,正则表达式ifconfig |sed -n '2p' |sed 's.*inet//g' |sed 's#netmask.*$##g' #用/ # 均可 理论可用任何特殊字符替代 #sed -r 后
千家信息网最后更新 2025年02月08日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安全错误
数据库的锁怎样保障安全
dyaz盗版服务器
丰台区大型软件开发配置
国家公安网络安全中心
西安网络安全职位
海南医院卫星授时服务器
软件开发公司的组织文化
软件开发高级工程师证书长什么样
负责网络安全公司
鹤壁网络技术哪家好
昆山有软件开发吗
web设计要用什么软件开发
拉普拉斯网络技术
app服务器通讯异常是为什么
网络安全服务提升
数据库 查找表共有多少数
云天网络安全有限公司
完善不动产数据库
河北专科软件开发哪个学校好
下面不属于网络安全服务是
数据库技术与应用章节测试
jaspar数据库是免费的吗
网络安全小知识宣传稿件
小学生网络安全绘作品
安阳软件开发公司推广渠道
飞旭软件开发有限公司
博思得数据库连接
公安部网络安全保卫局系统
大学生网络安全作文1500
远程删数据库
网络技术支持中心