当前位置: 首页 > news >正文

网站建设服务器租赁百度收录站长工具

网站建设服务器租赁,百度收录站长工具,插画师培训网站建设,wordpress不能安装文章目录 一.awk概述1.概述2.作用3.awk的工作过程4.awk 工作原理及命令格式5.awk的基本操作及其内置变量5.1 awk的-F操作5.2 awk的-v操作5.3 内置变量 二.awk 打印1.基本打印用法1.1 默认打印1.2打印文件内容 2.对行进行操作2.1 只打印行号#xff08;有多少行#xff09;2.2… 文章目录 一.awk概述1.概述2.作用3.awk的工作过程4.awk 工作原理及命令格式5.awk的基本操作及其内置变量5.1 awk的-F操作5.2 awk的-v操作5.3 内置变量 二.awk 打印1.基本打印用法1.1 默认打印1.2打印文件内容 2.对行进行操作2.1 只打印行号有多少行2.2 打印行号和内容2.3 只打印第几行2.4打印第几行到第几行2.5 奇偶行打印 三.awk运算1.整数运算加减乘除2.小数加减乘除3.取幂运算 四.getline1.getline的工作过程1.1 无重定向符号1.2 左右有管道符号或重定向符时 五.文件内容匹配过滤打印1.以什么为开头过滤打印2.以什么为结尾过滤打印3.BEGIN END模式4.-v的用法变量赋值 六.awk的条件判断打印1.打印第几列的数值大于多少的才打印2.取反3.条件判断4.awk的三元表达式4.1 格式4.2 用法 七.awk的精确筛选1.常用选项2.示例2.1 代表第n个字段包含某个字符串2.2 代表第n个字段不包含某个字符串2.3 代表第n个字段为某个字符串2.4 代表第n个字段不为某个字符串 八.awk结合数组运用1.awk中定义数组打印2.awk中的数组形成遍历3.处理文件去重统计4.示例4.1 简单的日志分割4.2 只分割前两行内容的第一个和第四个字段 一.awk概述 1.概述 awk 是一个功能强大的编辑工具逐行读取输入文本默认以空格或tab键作为分隔符作为分隔并按模式或者条件执行编辑命令。 以空格做为分隔符多个空格他会自动压缩成一个 2.作用 1按照命令找指定行 2对找到的行打印或其他操作awk默认打印 3可以在无交互的情况下不用进入真正的文件实现相当复杂的文本操作用于 Shell 脚本完成各种自动化配置任务。 3.awk的工作过程 1先看BEGIN{action;… }这个模块是读取操作读文件的所有行所有读取完毕然后一次执行 2END{action;… }打印输出结果对前面的结果条件判断还可以用代码接着操作 4.awk 工作原理及命令格式 对行分成多个字段进行处理切片执行结果可以通过print的功能将字段数据打印显示 awk ’ 5.awk的基本操作及其内置变量 awk 选项 ’模式或条件操作‘文件1 文件2… 5.1 awk的-F操作 “分隔符” 指明输入时用到的字段分隔符默认的分隔符是若干个连续空白符 5.2 awk的-v操作 varvalue 变量赋值 注一定是单引号‘模式或条件 {操作}’ { }外指定条件{ }内指定操作。 用逗号指定连续的行用 || 指定不连续的行。表示”且“。 awk {print $1,$2,$3} 5.3 内置变量 不能用双引号括起来不然系统会把它当成字符串。 内置变量选项 选项注释$0当前处理的行的整行内容 打印所有$n当前处理行的第n个字段第n列NR当前处理的行的行号序数NF当前处理的行的字段个数。$NF代表最后一个字段FS列分割符。指定每行文本的字段分隔符输入内容的分隔符默认为空格或制表位。与-F作用相同 用-F可以不加单引号 -F:用FS必须用“”OFS输出内容的列分隔符FILENAME被处理的文件名RS行分隔符。awk从文件中读取资料时将根据RS的定义把资料切割成许多条记录而awk一次仅读入一条记录进行处理。预设值是\n 二.awk 打印 1.基本打印用法 1.1 默认打印 格式awk ‘{print}’ 文件名 例 awk {print} test.txt 11 22 33 441.2打印文件内容 10和1放置{ }前能够起到限制打印内容的作用默认为1如果为0就不打印内容 格式awk ‘0{print}’ test.txt awk ‘1{print}’ test.txt 例 [roottest1 ~]# awk 0{print} test.txt [roottest1 ~]# awk 1{print} test.txt 11 qq 55 22 ww 55 33 ee 66 44 rr 772awk ‘{print $0}’ test1.txt ----$0,代表整行内容awk是逐行读取处理配合$0,就是打印所有内容 $1只取第一列可以对行切片输出列 awk {print $1} test.txt ——————————打印文件的第一列 11 22 33 443对/etc/passwd 取第一列和第四列 awk -F: {print $1,$4} /etc/passwd root 0 bin 1 daemon 2 adm 4 lp 7 sync 0 shutdown 0 halt 02.对行进行操作 2.1 只打印行号有多少行 awk {print NR} /etc/passwd #列出有多少行数2.2 打印行号和内容 awk {print NR,$0} /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin2.3 只打印第几行 格式awk ‘NR第几行{print}’ 文件名 例 awk NR3{print} /etc/passwd——指定打印出第三行的内容 daemon:x:2:2:daemon:/sbin:/sbin/nologin2.4打印第几行到第几行 格式awk ‘NR首打印行,NR末打印行{print}’ 文件名 例 awk NR3,NR5{print} /etc/passwd——打印3-5行的内容 daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin可用正则表达式 awk (NR3)(NR5){print} /etc/passwd daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin2.5 奇偶行打印 偶数行打印 awk NR%20{print NR,$0} /etc/passwd 2 bin:x:1:1:bin:/bin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 8 halt:x:7:0:halt:/sbin:/sbin/halt 10 operator:x:11:0:operator:/root:/sbin/nologin 12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin奇数行打印 awk NR%21{print NR,$0} /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 11 games:x:12:100:games:/usr/games:/sbin/nologin 13 nobody:x:99:99:Nobody:/:/sbin/nologin三.awk运算 1.整数运算加减乘除 [roottest1 ~]# awk BEGIN{print 2030} 50 [roottest1 ~]# awk BEGIN{print 20*30} 600 [roottest1 ~]# awk BEGIN{print 20-30} -10 [roottest1 ~]# awk BEGIN{print 20/30} 0.6666672.小数加减乘除 [roottest1 ~]# awk BEGIN{print 10.2312.11} 22.34 [roottest1 ~]# awk BEGIN{print 10.23-12.11} -1.88 [roottest1 ~]# awk BEGIN{print 10.23*12.11} 123.885 [roottest1 ~]# awk BEGIN{print 15/12.11} 1.238653.取幂运算 [roottest1 ~]# awk BEGIN{print 2^3} 8 [roottest1 ~]# awk BEGIN{print 2**3} 8四.getline 1.getline的工作过程 1.1 无重定向符号 当getline左右无重定向符号“”,“”或者管道符号“|”时 awk首先读取的是第一行而getline获取的是光标跳转至下一行的内容也就是第二行。 [roottest1 ~]# cat test.txt 11 qq 55 22 ww 55 33 ee 66 44 rr 77 [roottest1 ~]# awk {getline;print $0} test.txt 22 ww 55 44 rr 771.2 左右有管道符号或重定向符时 getline则作用定向输入文件由于文件是刚打开并没有被awk读入一行 而只是getline读入所以getline返回的是文件的第一行而不是跳转至一行输入 原因getline运行之后awk会改变NF,NR,$0FNR等内部变量所以此时读取$0的行号不再为1而是2 [roottest1 ~]# awk {getline test.txt;print $0 test1.txt;} test.txt #将test的文件传送给test1文件中 [roottest1 ~]# ls anaconda-ks.cfg ks.cfg test.txt 模板 图片 下载 桌面 initial-setup-ks.cfg test1.txt 公共 视频 文档 音乐 [roottest1 ~]# cat test1.txt 11 qq 55 22 ww 55 33 ee 66 44 rr 77五.文件内容匹配过滤打印 1.以什么为开头过滤打印 格式awk ‘/^开头打印的字符/{print}’ 文件名 例 awk /^root/{print} /etc/passwd————以root为开头打印 root:x:0:0:root:/root:/bin/bash2.以什么为结尾过滤打印 格式awk ‘/结尾的打印字符$/{print}’ 文件名 例 awk /nologin$/{print} /etc/passwd————以nologin结尾打印 bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin3.BEGIN END模式 格式awk ‘BEGIN{…};{…};END{…}’ 文件 处理过程 1、在awk处理指定的文本之前需要先执行BEGIN{…}模式里的命令操作 2、中间的{…} 是真正用于处理文件的命令操作 3、在awk处理完文件后才会执行END{…}模式里的命令操作。END{ }语句块中往往会放入打印结果等语句。 [roottest1 ~]# cat test.txt 11 qq 55 22 ww 55 33 ee 66 44 rr 77 [roottest1 ~]# awk BEGIN{x1};{x};END{print x} test.txt 5对字段进行处理打印: [roottest1 ~]# head -n5 /etc/passwd |awk -F: {print $1} root bin daemon adm lp [roottest1 ~]# head -n5 /etc/passwd |awk -F: {print $2} x x x x x4.-v的用法变量赋值 将/etc/passwd中的第一列和第二列的中间替换为 [roottest1 ~]# fs:;awk -v FS$fs -v OFS {print $1,$3} /etc/passwd root0 bin1 daemon2 adm3fs的是然后使用-v给FS赋值:,输入的时候FS是-v给OFS赋值输出的时候变量为然后打印第一列和第三列 将/etc/passwd中的第一列和第二列的中间替换为 [roottest1 ~]# awk -v FS: -v OFS {print $1,$3} /etc/passwd root0 bin1 daemon2 adm3 lp4 sync5#默认就是换行输出不需要改 [roottest1 ~]# echo $PATH | awk -v RS: {print $1} /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/bin六.awk的条件判断打印 1.打印第几列的数值大于多少的才打印 格式awk -F: ‘第几列大于的数值{print $0}’ /etc/passwd 例 [roottest1 ~]# awk -F: $3500{print $0} /etc/passwd polkitd:x:999:997:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:995:daemon account for [roottest1 ~]# awk -F: $310{print $0} /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 2.取反 取反uid小于10的行所有列 [roottest1 ~]# awk -F: !($310){print $0} /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin3.条件判断 使用了if语句内部条件(),外部条件{}整个加{}作为一条语句执行相当于嵌套语法 [roottest1 ~]# awk -F: {if ($3500){print $0}} /etc/passwd polkitd:x:999:997:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:995:daemon account for 4.awk的三元表达式 4.1 格式 格式awk ‘(条件表达式)?(A表达式或者值):(B表达式或者值)’ 4.2 用法 [roottest1 ~]# awk -F: {max($3$4)?$3:$4;{print max,$0}} /etc/passwd|sed -n 1,6p————————比较passwd文件中以:为分割的第三个和第四个字段的大小 0 root:x:0:0:root:/root:/bin/bash 1 bin:x:1:1:bin:/bin:/sbin/nologin 2 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 7 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 5 sync:x:5:0:sync:/sbin:/bin/syncmax($3$4)?$3:$4这将变量 max 设置为输入行字段 3 和 4 之间的最大值。 ? : 运算符是 if-else 语句的简写因此此行等效于 if ($3 $4) { max$3 } else { max$4 } 取比较结果的最大值赋值给变量max并且输出max行的所有内容然后打印其中的1-6行 七.awk的精确筛选 1.常用选项 选项注释$n( )用于对比数值$n~“字符串”代表第n个字段包含某个字符串$n!~“字符串”代表第n个字段不包含某个字符串$n“字符串”代表第n个字段为某个字符串$n!“字符串”代表第n个字段不为某个字符串$NF代表最后一个字段 2.示例 2.1 代表第n个字段包含某个字符串 [roottest1 ~]# awk -F: $7~bash {print $1,$NF} /etc/passwd————输出第七个字段包含“bash”所在行的第一个字段和最后一个字段 root /bin/bash zjf /bin/bash2.2 代表第n个字段不包含某个字符串 输出第七个字段不包含“nologin”所在行的第一个字段和最后一个字段 [roottest1 ~]# awk -F: $7!~nologin {print $1,$NF} /etc/passwd root /bin/bash sync /bin/sync shutdown /sbin/shutdown halt /sbin/halt zjf /bin/bash2.3 代表第n个字段为某个字符串 指定第六个字段为/home/zjf,第七个字段为/bin/bash,输出满足这些条件所在行的第一个和最后一个字段 [roottest1 ~]# awk -F: ($6/home/zjf)($7/bin/bash){print $1,$NF} /etc/passwd zjf /bin/bash指定第七个字段为/bin/bash 全部打印 awk -F: $7/bin/bash {print $0} /etc/passwd root:x:0:0:root:/root:/bin/bash zjf:x:1000:1000:zjf:/home/zjf:/bin/bash2.4 代表第n个字段不为某个字符串 代表第7字段不为/bin/bash的字符串全量打印 awk -F: $7!/bin/bash {print $0} /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown八.awk结合数组运用 1.awk中定义数组打印 [roottest1 ~]# awk BEGIN{a[0]10;a[1]20;a[2]30;print a[1]} 202.awk中的数组形成遍历 [roottest1 ~]# awk BEGIN{a[0]10 ; a[1]20 ; a[2]30;for(i in a)print i,a[i]} 0 10 1 20 2 303.处理文件去重统计 [roottest1 ~]# cat test2.txt aaa aaa bbb ccc aaa bbb aaa [roottest1 ~]# awk {a[$1]};END{for(i in a){print i,a[i]}} test2.txt aaa 4 ccc 1 bbb 24.示例 4.1 简单的日志分割 [roottest1 ~]# awk {print $1, $7, $9} /var/log/messages Jun softwarersyslogd x-pid706 Jun Session of Jun Session of#在这个命令中我们使用单引号将awk命令的操作包含起来。 $1、$7和$9是awk的内置变量分别表示每行日志文件中的第1、第7和第9个字段。 通过使用print命令我们将这些字段分别打印出来以空格分隔。 最后我们指定日志文件的路径/var/log/messagesawk会自动对文件中的每行进行处理并输出结果。4.2 只分割前两行内容的第一个和第四个字段 [roottest1 ~]# awk NR2{print $1, $4} /var/log/messages Jun test1 Jun test1
http://www.dnsts.com.cn/news/80035.html

相关文章:

  • 做变形记图网站营销型网站建设大千建站
  • 网站微信推广方案wordpress局域网
  • 17网站一起做网店普宁池尾雅晨怎么看网站的服务器
  • 公司网站建设的环境分析上海网页建站模板
  • 网站改版是什么衡水做网站电话
  • 商机互联做网站怎么样网站首页特效
  • 餐饮公司加盟网站建设有哪些专做自然风景图片的网站
  • 飞虎队网站建设佳木斯做网站
  • 网站建设哪家服务态度好江阴网络推广公司
  • 东阳做网站公司电子商务网站建设课
  • 做三年网站需要多少钱政务公开 加强门户网站建设
  • wordpress中英文转换宁波seo外包
  • 做生存分析的网站有哪些自己建公司网站可以嘛
  • 一个具体网站的seo优化wordpress会员地址
  • 网站内容页面怎么做做名片去哪个网站
  • 从网站建设到网站运营上海建网站计划
  • 推广网站企业WordPress 文章模板制作
  • c2c商城网站建设二次开发什么平台推广效果最好
  • 网站内容更新慢原因杭州网站建设找思创
  • thinkphp可以做网站吗建筑在线设计平台
  • 网站建设评比考核报告河南企业网络推广方法
  • 手机建立一个免费网站h5案例分享平台
  • 建立网站要准备多少钱海淀网站建设公司电话
  • 阜新本地网站建设平台网站代码关键词标题
  • 响应式布局网站开发如何建设公司的网站首页
  • 网站速度诊断安全文化建设示范企业
  • 手机网站自助建站源码同ip多域名做同行业网站
  • 成都哪家网站开发好做网站什么内容吸引人
  • 哪个网站做长图免费转高清镇江教育平台网站建设
  • 类似 wordpress 建站黑色大气金融投资企业网站模板