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

网站模板文件不存在青岛建站公司电话

网站模板文件不存在,青岛建站公司电话,清丰网站建设,一起做网站逛市场目录 认识awk 使用awk 语法 常用命令选项 awk变量 内置变量 自定义变量 printf命令 格式 演示 操作符 格式 演示 awk PATTERN 匹配部分 格式 演示 awk有意思的案例 认识awk awk是一种编程语言#xff0c;用于在linux/unix下对文本和数据进行处理。数据可以来…目录 认识awk 使用awk 语法 常用命令选项 awk变量 内置变量 自定义变量 printf命令 格式 演示 操作符 格式 演示 awk PATTERN 匹配部分 格式 演示 awk有意思的案例 认识awk awk是一种编程语言用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能是linux/unix下的一个强大编程工具。它在命令行中使用但更多是作为脚本来使用。awk有很多内建的功能比如数组、函数等这是它和C语言的相同之处灵活性是awk最大的优势。 awk其实不仅仅是工具软件还是一种编程语言。不过本文只介绍它的命令行用法对于大多数场合应该足够用了。 使用awk 语法 awk [options] program varvalue file…awk [options] -f programfile varvalue file…awk [options] BEGIN{ action;… } pattern{ action;… } END{ action;… } file ... 常用命令选项 -F fsfs指定输入分隔符fs可以是字符串或正则表达式如-F: -v varvalue赋值一个用户定义变量将外部变量传递给awk -f scripfile从脚本文件中读取awk命令 awk变量 变量内置和自定义变量每个变量前加 -v 命令选项 内置变量 1格式 FS 输入字段分隔符默认为空白字符 OFS 输出字段分隔符默认为空白字符 RS 输入记录分隔符指定输入时的换行符原换行符仍有效 ORS 输出记录分隔符输出时用指定符号代替换行符 NF 字段数量共有多少字段 $NF引用最后一列$(NF-1)引用倒数第2列 NR 行号后可跟多个文件第二个文件行号继续从第一个文件最后行号开始 FNR 各文件分别计数, 行号后跟一个文件和NR一样跟多个文件第二个文件行号从1开始 FILENAME 当前文件名 ARGC 命令行参数的个数 ARGV 数组保存的是命令行所给定的各参数查看参数 2演示 [roottest ~]# cat awkdemo hello:world linux:redhat:lalala:hahaha test:love:youou [roottest ~]# awk -v FS: {print $1,$2} awkdemo #FS指定输入分隔符 hello world linux redhat test love //这里打印了以为输入分隔符打印了第一列和第二列 [roottest ~]# awk -v FS: -v OFS--- {print $1,$2} awkdemo #OFS指定输出分隔符 hello---world linux---redhat test---love //这里以为输入分隔符---为输出分隔符然后打印出了第一列和第二类 [roottest ~]# awk -v RS: {print $1,$2} awkdemo hello world linux redhat lalala test love youou //指定以:为换行符并且原换行符无效 [roottest ~]# awk -v FS: -v ORS--- {print $1,$2} awkdemo hello world---linux redhat---test love--- //这里以为输入分隔符并且将‘---’替换\n 来输出第一列和第二列 [roottest ~]# awk -F: {print NF} awkdemo 2 4 3 //打印出了每行的字段数 [roottest ~]# awk -F: {print $(NF-1)} awkdemo #显示倒数第2列 hello lalala love //显示出倒数第二列 [roottest ~]# awk {print NR} awkdemo awkdemo1 1 2 3 4 5 //打印出行号 [roottest ~]# awk END{print NR} awkdemo awkdemo1 5 //打印出最后一行的行号 [roottest ~]# awk {print FNR} awkdemo awkdemo1 1 2 3 1 2 //一共两个文件各文件分别计数, 行号 [roottest ~]# awk {print FILENAME} awkdemo awkdemo awkdemo awkdemo //当前文件名 [roottest ~]# awk BEGIN {print ARGC} awkdemo awkdemo1 3 //命令行参数的个数 [roottest ~]# awk BEGIN {print ARGV[0]} awkdemo awkdemo1 awk //第一个参数 [roottest ~]# awk BEGIN {print ARGV[1]} awkdemo awkdemo1 awkdemo //第二个参数 [roottest ~]# awk BEGIN {print ARGV[2]} awkdemo awkdemo1 awkdemo1 //第三个参数 自定义变量 自定义变量( 区分字符大小写) 1-v varvalue ① 先定义变量后执行动作print [rootcentos111 test]# awk -v nameyps -F: {print name:$0} awkdemo yps:hello:world yps:linux:redhat:lalala:hahaha yps:along:love:youou ② 在执行动作print后定义变量 [rootcentos111 test]# awk -F: {print name:$0;nameyps} awkdemo :hello:world yps:linux:redhat:lalala:hahaha yps:along:love:youou 2在program 中直接定义 可以把执行的动作放在脚本中直接调用脚本 -f [rootcentos111 test]# cat awk {nameyps;print name,$1} [rootcentos111 test]# awk -F: -f awk awkdemo yps hello yps linux yps alongprintf命令 比print更强大 格式 1格式化输出 printf FORMAT, item1,item2, ... ① 必须指定FORMAT ② 不会自动换行需要显式给出换行控制符\n ③ FORMAT 中需要分别为后面每个item 指定格式符 2格式符与item 一一对应 %c: 显示字符的ASCII码 %d, %i: 显示十进制整数 %e, %E: 显示科学计数法数值 %f 显示为浮点数小数 %5.1f带整数、小数点、整数共5位小数1位不够用空格补上 %g, %G 以科学计数法或浮点形式显示数值 %s 显示字符串例%5s最少5个字符不够用空格补上超过5个还继续显示 %u 无符号整数 %%: 显示% 自身 3修饰符放在%c[/d/e/f...]之间 #[.#]第一个数字控制显示的宽度第二个# 表示小数点后精度%5.1f -左对齐默认右对齐 %-15s 显示数值的正负符号 %d 演示 ---筛选出/etc/passwd文件中的第一列个第三列 [rootcentos111 test]# awk -F: {print $1,$3} /etc/passwd | grep root root 0 ---第一列显示小于5的字符串第2列显示整数并换行 [rootcentos111 test]# awk -F: {printf %5s--%u\n,$1,$3} /etc/passwd root--0bin--1 daemon--2 ... ---使用-进行左对齐第2列显示浮点数 [rootcentos111 test]# awk -F: {printf %-20s--%-10.3f\n,$1,$3} /etc/passwd root --0.000 bin --1.000 daemon --2.000 ... 操作符 格式 算术操作符 xy, x-y, x*y, x/y, x^y, x%y -x: 转换为负数 x: 转换为数值 字符串操作符没有符号的操作符字符串连接 赋值操作符 , , -, *, /, %, ^ , -- 比较操作符 , !, , , , 逻辑操作符与 或|| 非! 函数调用 function_name(argu1, argu2, ...) 条件表达式三目表达式 selector ? if-true-expression : if-false-expression 注释先判断selector如果符合执行 ? 后的操作否则执行 : 后的操作 演示 1模式匹配符 ---查询以/dev开头的磁盘信息 [rootcentos111 test]# df -h | awk /^\/dev/ /dev/mapper/centos-root 17G 9.5G 7.6G 56% / /dev/sda1 1014M 254M 761M 25% /boot ---只显示磁盘使用状况和磁盘名 [rootcentos111 test]# df -h | awk /^\/dev/{print$(NF-1)--$1} 56%--/dev/mapper/centos-root 25%--/dev/sda1 ---查找磁盘大于40%的 [rootcentos111 test]# df -h | awk $0 ~ /^\/dev/{print$(NF-1)--$1} | awk -F% $1 40 56%--/dev/mapper/centos-root 2逻辑操作符 [rootcentos111 test]# awk -F: $30$31000{print $1,$3} /etc/passwd root 0 bin 1 daemon 2 ... [rootcentos111 test]# awk -F: $30||$31000{print $1} /etc/passwd root nfsnobody user user1 user2 [rootcentos111 test]# awk -F: !($30){print $1} /etc/passwd bin ... [rootcentos111 test]# awk -F: !(/bash$/){print $1,$3} /etc/passwd bin 1 daemon 2 ... 3条件表达式三目表达式 [rootcentos111 test]# awk -F: {$31000? usertypecommon user:usertyprsysadmin user;print usertype,$1,$3} /etc/passwdroot 0bin 1 ... common user nfsnobody 65534 common user gnome-initial-setup 989 ... awk PATTERN 匹配部分 格式 PATTERN根据pattern 条件过滤匹配的行再做处理 1如果未指定空模式匹配每一行 2/regular expression/ 仅处理能够模式匹配到的行正则需要用/ / 括起来 3relational expression关系表达式结果为“真”才会被处理 真结果为非0值非空字符串 假结果为空字符串或0值 4line ranges行范围 startline(起始行),endline(结束行)/pat1/,/pat2/ 不支持直接给出数字可以有多段中间可以有间隔 5BEGIN/END 模式 BEGIN{}: 仅在开始处理文件中的文本之前执行一次 END{} 仅在文本处理完成之后执行 演示 [rootcentos111 test]# awk -F: {print $1} awkdemo hello linux along [rootcentos111 test]# awk -F: /hello/{print $1} awkdemo hello [rootcentos111 test]# awk -F: 1{print $1} awkdemo hello linux along [rootcentos111 test]# awk -F: 0{print $1} awkdemo [rootcentos111 test]# awk -F: /^h/,/^a/{print $1} awkdemo hello linux along [rootcentos111 test]# awk -F: BEGIN{print 第一列}{print $1} END{print 结束} awkdemo 第一列 hello linux along 结束 awk有意思的案例 seq 10 是一个 Linux 命令表示生成一个从 1 到 10 的序列。 [rootcentos111 test]# seq 10 1 2 3 4 5 6 7 8 9 10 ---因为i0为假所以不打印 [rootcentos111 test]# seq 10 | awk i0 ---i1为真所以全部打印 [rootcentos111 test]# seq 10 | awk i1 1 2 3 4 5 6 7 8 9 10 ---只打印奇数行奇数行i进入时本身为空被赋为!i即不为空所以打印偶数行i进入时本身不为空被赋为!i即为空所以不打印 [rootcentos111 test]# seq 10 | awk i!i 1 3 5 7 9 ---解释上一个操作i在奇偶行的值 [rootcentos111 test]# seq 10 | awk {i!i;print i} 1 0 1 0 1 0 1 0 1 0 ---只打印偶数行是上边打印奇数行的取反 [rootcentos111 test]# seq 10 | awk !(i!i) 2 4 6 8 10 ---只打印偶数行先对i进行赋值即不为空刚好和打印奇数行相反 [rootalong ~]# seq 10 |awk -v i1 i!i 2 4 6 8 10 seq 100 |awk i!i 那这段是怎么理解 首先我们要了解一下awk对于未定义的变量处理方法 对于数值运算未定义变量的话awk会赋予变量初值为0 对于字符运算未定义变量的话awk会赋予变量初值为空字符串 了解了这两条我们再看awk i!i这条命令是什么含义awk是对文本文件一行一行处理的seq 100命令执行后是如下形式 1 2 3 …… 100 首相它读取第一行数据也就是1然后进行模式匹配i是一个未定义的变量上面我们提到了对于数值运算未定义变量的话初值会为0这时i的值即为0也就是i!0那么!是什么呢!就是取反的意思等号右边其实就是个布尔值0为假1为真这里是!0那么它就为非假也就是为真真的值为1因此i!01也就相当于i1到此i的值为1. i的值为1后有什么作用呢 i1说明值为真awk会认定模式为真这时匹配是成功的会把第一行输出到屏幕可能有的人会问了这里只有i!i没有print它怎么输出的?awk的格式为 模式{ 动作}如果只有模式没有动作那么匹配成功后默认的会输出整条记录也就是说这条命令完整的写法为 seq 1 100 | awk i!i{print $0} 为什么第二行没有输出呢 前面进行第一行模式匹配的时候i的值已经由0变为了1在进行第二行操作的时候i!i变成了i!1这样i的值就又变成了0假所以第二行没有输出到了处理第三行的时候i!i变成了i!0所以会输出第三行以此类推……这样我们就可以输出奇数行而删除偶数行了。 那么如何输出偶数行呢 我们可以加一个if判断一下如果i的值为真我们就输出奇数行如果为假就输出偶数行 [rootcentos111 test]# seq 1 10 |awk {i!i;if(i) print $0} 1 3 5 7 9 [rootcentos111 test]# seq 1 10 |awk {i!i;if(!i) print $0} 2 4 6 8 10 看到这儿又有朋友可能会问了为什么现在把i!i放到动作里了呢 我们看这两条命令 [rootcentos111 test]# seq 1 10 |awk i!i{print !i} 0 0 0 0 0 [rootcentos111 test]# seq 1 10 |awk i!i{print i} 1 1 1 1 1 如果把i!i放到模式里边它会进行匹配把匹配的结果传递给动作那个时候已经把不匹配的舍去了所以我们无法用if来判断i的值。 到这里awk的一些基本用法就结束了下一篇会继续介绍awk的高级用法
http://www.zqtcl.cn/news/111522/

相关文章:

  • 网站和做游戏重庆市建设工程信息网安全监督特种人员
  • 沈阳网站建设活动方案部分网站打不开的原因
  • 网站维护界面设计做的网站一直刷新
  • 国外网站 国内访问速度土木工程毕业设计网站
  • 宿迁网站建设制作中国广告设计网
  • 上门做美容的有什么网站微信网页版本
  • 专门做餐饮运营的网站网站开发相关知识
  • 石家庄门户网站建设免费简历模板的网站
  • 微网站建设市场如何做好平台推广
  • 网站不备案做优化小程序开发前景怎么样
  • 美丽说网站优化百度关键词优化
  • 同性男做的视频网站赶集网招聘最新招聘附近找工作
  • 做挖机配件销售的网站oa办公系统软件哪家好
  • 聊城设计网站商务网站的特点
  • 厦门做个网站多少钱工程建设范围
  • 百度推广官方网站在哪里制作网页
  • 济南集团网站建设方案沈阳手机网站制作
  • 网站备案号注销的结果做网站的外包能学到什么
  • 在线购物网站开发项目网站建设电话推广话术
  • 网站主体信息太原站扩建
  • 西平县住房和城乡建设局网站空间商网站
  • p2p网站建设cms一键生成图片
  • 甘肃省第八建设集团公司网站能够做物理题的网站
  • 团购网站建设方案建筑工程网校官网
  • 佛山建站网站模板小公司管理方法
  • 常德住房和城乡建设局网站做风险代理案源的网站
  • 手机网站开发人员选项wordpress加载媒体库
  • 做钓鱼网站用哪种编程语言张家界有实力seo优化费用
  • 如何做一个主题网站做网站必须有框架么
  • 建设网站需要什么知识上海高端网页设计