脚本基本应用 grep sed和awk | 您所在的位置:网站首页 › 12354大写 › 脚本基本应用 grep sed和awk |
目录 一、正则表达式 grep 扩展正则表达式 sed和awk 3、sed的基本应用 4.awk的使用 命令修改配置文件方法 一、正则表达式 grep1、正则表达式的作用正则表达式的组成 1)正则表达式的作用 针对文件或者文本内容进行处理 帮助用户快速查找文本文件内容 2)正则表达式的组成 普通字符 大写A-Z 小写a-z 符号 元字符 2、正则表达式的常见选项和正则表达式常见的元字符 1)正则表达式grep常见的选项 -n:显示行号 -o:只显示匹配内容 -i:不区分大写或者小写字母 -v:取反 -E:支持扩展 -q:静默执行 -w: 识别为单词 -c: 统计匹配的行数 2)正则表达式的元字符 ^:匹配行起始内容 $:匹配行结束内容 .:匹配任意单字符 .*:匹配任意字符 []:匹配括号里边的内容 [-]:匹配括号里边内容的范围 {n}:匹配的范围的次数 [n1-n2]:匹配开始和结束内容 { n,m }:重复前面的一个字符n到m次 { n, }:重复前面的一个字符至少n次 [^]:匹配括号之外的任意字符 \:转义字符 \: 固定词尾 示例文件 [root@bogon ~]# vim dd.sh #!/bin/bash qwe qsdfe qsdf asdf 1234 12354 过滤关键字并显示行号 [root@bogon ~]# grep -n '1234' dd.sh 6:1234 查看行q开始字段 [root@bogon ~]# grep -n '^q' dd.sh 2:qwe 3:qsdfe 4:qsdf 匹配任意单个字符 [root@bogon ~]# grep -n 'q.e' dd.sh 2:qwe [root@bogon ~]# grep -n 'q...e' dd.sh 3:qsdfe 匹配括号内容 [root@bogon ~]# grep -n 'q[w]e' dd.sh 2:qwe [root@bogon ~]# grep -n 'qs[d]f' dd.sh 3:qsdfe 4:qsdf 只显示匹配内容 [root@bogon ~]# grep -o 'q' dd.sh q q q 匹配开始是q结束是e的字段 [root@bogon ~]# grep -n 'q*e' dd.sh 2:qwe 3:qsdfe [root@bogon ~]# grep -n "q*f" dd.sh 3:qsdfe 4:qsdf 5:asdf 过滤IP地址信息 [root@bogon ~]# cat q.txt 192 .168.1.139 192 .168.1.111 192 .168.1.121 [root@bogon ~]# grep -n -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" q.txt 1:192.168.1.139 2:192.168.1.111 3:192.168.1.121 扩展正则表达式扩展正则表示常见的元字符 +:重复一次或者多次前面字符显示出来 ?:显示当前字母前一个字符 |:或者,显示多个字符 ():查找组字符串 ()+:辨别多个重复组 将4前面内容显示出来 [root@bogon ~]# egrep -n '?4' dd.sh 6:1234 7:12354 将qwe或者asd显示出来 [root@bogon ~]# egrep -n 'qwe|asd' dd.sh 2:qwe 5:asdf 将包含 q 1 a 字符所在行显示出来 [root@bogon ~]# egrep -n '(q|1|a)' dd.sh 1:#!/bin/bash 2:qwe 3:qsdfe 4:qsdf 5:asdf 6:1234 7:12354 将开头是q 中间是sd 结束是f 的单词显示出来 [root@bogon ~]# egrep -n 'q(sd)f' dd.sh 3:qsdfe 4:qsdf sed和awk1、sed的作用和sed的工作流程 1)sed的作用 sed是一个文本文件解析转换工具 用于读取、修改、显示数据 2)sed的作用流程 读取数据:从文件、输入、管道命令中读取数据,临时存储数据 执行:根据sed命令在模式操作空间中进行无交互修改数据 显示:将文本文件的修改结果进行打印显示 2、sed命令常见的选项和操作符 1)sed命令选项 -n:显示处理后的结果 -h:显示帮助 -e:指定命令或者脚本处理输入的文本文件 -f:指定脚本处理输入的文本文件 -i:直接编辑文本文件 2)sed的操作符号 a:添加内容 d:删除内容 p:打印内容 s:替换内容 y:字符转换 c:将特定行替换成指定的内容 3、sed的基本应用显示一到三行数据 [root@bogon ~]# sed -n '1,3p' dd.sh #!/bin/bash qwe qsdfe 显示奇数 [root@bogon ~]# sed -n -e '1p;3p;5p' dd.sh #!/bin/bash qsdfe asdf 不显示第一行数据(可以算是删除 没有真正删除掉) [root@bogon ~]# sed '1d' dd.sh qwe qsdfe qsdf asdf 1234 12354 修改大小写 [root@bogon ~]# sed -i 's/qwe/QWE/' dd.sh [root@bogon ~]# cat dd.sh #!/bin/bash QWE qsdfe qsdf asdf 1234 12354 关键字添加注释 [root@bogon ~]# sed -i '/^QWE/s/^/#/' dd.sh [root@bogon ~]# cat dd.sh #!/bin/bash #QWE qsdfe qsdf asdf 1234 12354 将1到5行移动到6到7行中间 [root@bogon ~]# sed -i '1,5H;6,7G' dd.sh [root@bogon ~]# cat dd.sh #!/bin/bash QWE qsdfe qsdf asdf 1234 #!/bin/bash QWE qsdfe qsdf asdf 12354 #!/bin/bash QWE qsdfe qsdf asdf 4.awk的使用1)awk的作用 过滤和读取数据使用 2)awk的变量 FS:文本字段的分隔符,可以使用空格为占位符 NF:处理行数 NR:处理数据的行号 $0:处理数据的整行数据 $n:处理数据行的第几列数据 显示第一列数据 [root@bogon ~]# awk '{print $1}' q.txt 192 192 192 显示所有内容 [root@bogon ~]# awk '{print}' dd.sh #!/bin/bash #QWE qsdfe qsdf asdf #!/bin/bash #QWE qsdfe qsdf asdf #!/bin/bash #QWE qsdfe qsdf asdf 12354 #!/bin/bash #QWE qsdfe qsdf asdf 在第一列和第二列之间添加-- [root@bogon ~]# awk '{print $1"--"$2}' q.txt 192.168.1.139-- -- -- -- 192.168.1.111-- -- -- 192.168.1.121-- 从小到大排序 [root@bogon ~]# sort q.txt 192.168.1.111 192.168.1.121 192.168.1.139 排序 r是逆序 从大到小 [root@bogon ~]# sort -nr q.txt 192.168.1.139 192.168.1.121 192.168.1.111 统计出现的次数 空格5就是有五行空格 [root@bogon ~]# sort q.txt | uniq -c 5 1 192.168.1.111 1 192.168.1.121 1 192.168.1.139 从历史命令中提取使用率最高的前五个命令 [root@bogon ~]# history | awk '{print $2}' | sort |uniq -c |sort -nr |sed -n '1,5p' 12 ifconfig 12 awk 7 sort 6 yum 3 sed 从历史命令中提取使用率最高的前五个命令 [root@bogon ~]# history | awk '{print $2}' | sort |uniq -c |sort -nr |awk 'NR |
CopyRight 2018-2019 实验室设备网 版权所有 |