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

兰溪自适应网站建设特点音乐网站后台管理模板

兰溪自适应网站建设特点,音乐网站后台管理模板,三艺网站建设,seo关键词优化软件合作sed 工具简介在了解了一些正规表示法的基础应用之后#xff0c;再来呢#xff1f;呵呵#xff5e;两个东西可以玩一玩的#xff0c;那就是 sed 跟 awk 了#xff01;这两个家伙可是相当的有用的啊#xff01;举例来说#xff0c;鸟哥写的 logfile.sh 分析登录文件的小程…sed 工具简介在了解了一些正规表示法的基础应用之后再来呢呵呵两个东西可以玩一玩的那就是 sed 跟 awk 了这两个家伙可是相当的有用的啊举例来说鸟哥写的 logfile.sh 分析登录文件的小程序绝大部分分析关键词的取用、统计等等就是用这两个宝贝蛋来帮我完成的 那么你说要不要玩一玩啊^_^我们先来谈一谈 sed 好了基本上 sed 可以分析 Standard Input (STDIN) 的数据然后将数据经过处理后再将他输出到 standrad out (STDOUT) 的一个工具。至于处理呢可以进行取代、删除、新增、撷取特定行等等的功能呢很不错吧 我们先来了解一下 sed的用法再来聊他的用途好了[rootlinux ~]# sed [-nefri] [动作]参数-n 使用安静(silent)模式。在一般 sed的用法中所有来自 STDIN的数据一般都会被列出到屏幕上。但如果加上 -n参数后则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e 直接在指令列模式上进行 sed的动作编辑-f 直接将 sed 的动作写在一个档案内 -ffilename 则可以执行 filename 内的sed 动作-r sed的动作支持的是延伸型正规表示法的语法。(预设是基础正规表示法语法)-i 直接修改读取的档案内容而不是由屏幕输出。动作说明 [n1[,n2]]functionn1, n2 不见得会存在一般代表『选择进行动作的行数』举例来说如果我的动作是需要在 10 到 20行之间进行的则『 10,20[动作行为] 』function 有底下这些咚咚a 新增 a的后面可以接字符串而这些字符串会在新的一行出现(目前的下一行)c 取代 c 的后面可以接字符串这些字符串可以取代n1,n2 之间的行d 删除因为是删除啊所以 d后面通常不接任何咚咚i 插入 i的后面可以接字符串而这些字符串会在新的一行出现(目前的上一行)p 打印亦即将某个选择的数据印出。通常 p 会与参数sed -n 一起运作s 取代可以直接进行取代的工作哩通常这个 s的动作可以搭配正规表示法例如 1,20s/old/new/g 就是啦范例范例一将 /etc/passwd 的内容列出并且我需要打印行号同时请将第 2~5 行删除[rootlinux ~]# nl /etc/passwd |sed 2,5d1 root:x:0:0:root:/root:/bin/bash6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown.....(后面省略).....# 看到了吧因为 2-5 行给他删除了所以显示的数据中就没有 2-5 行啰# 另外注意一下原本应该是要下达 sed -e 才对没有 -e 也行啦# 同时也要注意的是 sed 后面接的动作请务必以 两个单引号括住喔# 而如果只要删除第 2 行可以使用 nl /etc/passwd | sed 2d来达成# 至于第 3 到最后一行则是 nl /etc/passwd | sed 3,$d的啦范例二承上题在第二行后(亦即是加在第三行)加上『drink tea?』字样[rootlinux ~]# nl /etc/passwd |sed 2a drink tea1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologindrink tea3 daemon:x:2:2:daemon:/sbin:/sbin/nologin# 嘿嘿在 a 后面加上的字符串就已将出现在第二行后面啰那如果是要在第二行前呢# nl /etc/passwd | sed 2i drink tea 就对啦范例三在第二行后面加入两行字例如『Drink tea or .....』『drinkbeer?』[rootlinux ~]# nl /etc/passwd | sed 2a Drink tea or ......\ drink beer ?1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologinDrink tea or ......drink beer ?3 daemon:x:2:2:daemon:/sbin:/sbin/nologin# 这个范例的重点是我们可以新增不只一行喔可以新增好几行# 但是每一行之间都必须要以反斜线 \ 来进行新行的增加喔所以上面的例子中# 我们可以发现在第一行的最后面就有 \ 存在啦那是一定要的喔范例四我想将第2-5行的内容取代成为『No 2-5 number』呢[rootlinux ~]# nl /etc/passwd | sed 2,5c No 2-5number1 root:x:0:0:root:/root:/bin/bashNo 2-5 number6 sync:x:5:0:sync:/sbin:/bin/sync# 没有了 2-5 行嘿嘿嘿嘿我们要的数据就出现啦范例五仅列出第 5-7 行[rootlinux ~]# nl /etc/passwd | sed -n 5,7p5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown# 为什么要加 -n 的参数呢您可以自行下达 sed 5,7p就知道了(5-7行会重复输出)# 有没有加上 -n 的参数时输出的数据可是差很多的喔范例六我们可以使用 ifconfig 来列出 IP 若仅要 eth0 的 IP 时[rootlinux ~]# ifconfig eth0eth0 Linkencap:Ethernet HWaddr00:51:FD:52:9A:CAinetaddr:192.168.1.12 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr:fe80::250:fcff:fe22:9acb/64 Scope:LinkUPBROADCAST RUNNINGMULTICAST MTU:1500 Metric:1.....(以下省略).....# 其实我们要的只是那个 inet addr:..那一行而已所以啰利用 grep 与 sed 来捉[rootlinux ~]# ifconfig eth0 | grep inet | sed s/^.*addr://g| \ sed s/Bcast.*$//g#您可以将每个管线 (|) 的过程都分开来执行就会晓得原因啰# 去头去尾之后就会得到我们所需要的 IP 亦即是 192.168.1.12 啰范例七将 /etc/man.config 档案的内容中有 MAN的设定就取出来但不要说明内容。[rootlinux ~]# cat /etc/man.config | grep MAN| sed s/#.*$//g |\ sed /^$/d#每一行当中若有 # 表示该行为批注但是要注意的是有时候# 批注并不是写在第一个字符亦即是写在某个指令后方如底下的模样# 『shutdown -h now # 这个是关机的指令』批注 # 就在指令的后方了。# 因此我们才会使用到将 #.*$ 这个正规表示法范例八利用 sed 直接在 ~/.bashrc 最后一行加入『# This is a test』[rootlinux~]# sed -i $a # This is atest ~/.bashrc#上头的 -i 参数可以让你的 sed 直接去修改后面接的档案内容喔而不是由屏幕输出。# 至于那个$a 则代表最后一行才新增的意思。总之这个 sed 不错用啦而且很多的 shell script 都会使用到这个指令的功能 sed可以帮助系统管理员管理好日常的工作喔要仔细的学习呢awk 工具简介相较于 sed 常常作用于一整个行的处理 awk 则比较倾向于一行当中分成数个『字段』来处理。 因此awk相当的适合处理小型的数据数据处理呢awk 通常运作的模式是这样的[rootlinux ~]# awk 条件类型1{动作1} 条件类型2{动作2} ... filename awk可以处理后续接的档案也可以读取来自前个指令的 standard output 。 但如前面说的 awk主要是处理『每一行的字段内的数据』而预设的『字段的分隔符为 空格键 或 [tab]键 』举例来说我们用 last可以将登入者的数据取出来 结果如下所示[rootlinux ~]#lastdmtsai pts/0 192.168.1.12 Mon Aug 2209:40 still loggedinroot tty1 Mon Aug 1511:38 -11:39 (00:01)reboot systemboot 2.6.11 Sun Aug 1418:18 (715:41)dmtsai pts/0 192.168.1.12 Fri Aug 1212:07 -12:08 (00:01)若我想要取出账号与登入者的 IP 且账号与 IP 之间以 [tab] 隔开则会变成这样[rootlinux ~]# last | awk {print $1 \t $3}dmtsai 192.168.1.12root Monreboot bootdmtsai 192.168.1.12因为不论哪一行我都要处理因此就不需要有 条件类型 的限制我所想要的是第一栏以及第三栏但是第二行及第三行的内容怪怪的这是因为数据格式的问题啊所以啰使用 awk的时候请先确认一下您的数据当中如果是连续性的数据请不要有空格或 [tab]在内否则就会像这个例子这样会发生误判喔另外由上面这个例子您也会知道在每一行的每个字段都是有变量名称的那就是 $1, $2... 等变量名称以上面的例子来说dmtsai 是 $1 因为他是第一栏嘛至于 192.168.1.12 是第三栏 所以他就是 $3啦后面以此类推呵呵还有个变数喔那就是 $0 $0 代表『一整列资料』的意思 以上面的例子来说第一行的 $0代表的就是『dmtsai pts/0.... 』那一行啊 由此可知刚刚上面四行当中整个 awk的处理流程是读入第一行并将第一行的资料填入 $0, $1, $2.... 等变数当中依据 条件类型 的限制判断是否需要进行后面的 动作做完所有的动作与条件类型若还有后续的『行』的数据则重复上面 1~3 的步骤直到所有的数据都读完为止。经过这样的步骤您会晓得 awk是『以行为一次处理的单位』 而『以字段为最小的处理单位』。好了那么 awk 怎么知道我到底这个数据有几行有几栏呢这就需要awk 的内建变量的帮忙啦变量名称代表意义NF每一行 ($0) 拥有的字段总数NR目前 awk 所处理的是『第几行』数据FS目前的分隔字符预设是空格键我们继续以上面例子来做说明如果我想要列出每一行的账号并且列出目前处理的行数 并且说明该行有多少字段则可以这样(注意 awk 后续的所有动作以 括住 所以内容如果想要以 print打印时记得非变量的文字部分包含上一小节printf提到的格式中都需要使用双引号来定义出来喔)[rootlinux ~]# last | awk {print $1 \t lines: NR \t columes: NF}dmtsai lines:1 columes:10root lines:2 columes:9reboot lines:3 columes:9dmtsai lines:4 columes:10这样可以了解 NR 与 NF 的差别了吧好了底下来谈一谈所谓的 条件类型 了吧awk 的逻辑运算字符既然有需要用到 条件 的类别自然就需要一些逻辑运算啰例如底下这些运算单元代表意义 大于小于 大于或等于小于或等于 等于! 不等于值得注意的是那个 的符号因为在『逻辑运算』上面 就是所谓的大于、小于、等于等等的判断式上面我们习惯上是以 来表示而如果是直接给予一个值例如变量设定时就直接使用 而已。 好了我们实际来运用一下逻辑判断吧举例来说在/etc/passwd 当中是以冒号 : 来作为字段的分隔那假设我要查阅第三栏小于 10 以下的数据并且仅列出账号与第三栏那么可以这样做[rootlinux ~]# cat /etc/passwd | \ awk {FS:} $3 root:x:0:0:root:/root:/bin/bashbin 1daemon 2......(以下省略)......有趣吧不过怎么第一行没有正确的显示出来呢这是因为我们读入第一行的时候 那些变数 $1, $2...预设还是以空格键为分隔的所以虽然我们定义了 FS: 了 但是却仅能在第二行后才开始生效。那么怎么办呢我们可以预先设定awk 的变量啊 利用 BEGIN 这个关键词喔这样做[rootlinux ~]# cat /etc/passwd | \ awk BEGIN {FS:} $3 ......(以下省略)......很有趣吧而除了 BEGIN 之外我们还有 END 呢另外如果要用 awk 来进行『计算功能』呢以底下的例子来看假设我有一个薪资数据表内容是这样的Name 1st 2nd 3thVBird 23000 24000 25000DMTsai 21000 20000 23000Bird2 43000 42000 41000如何帮我计算每个人的总额呢而且我还想要格式化输出喔 你可以将上面的数据储存成一个名称为 pay.txt 的档案则[rootlinux ~]# cat pay.txt | \ awk NR1{printf s s s s s\n,$1,$2,$3,$4,Total }NR2{total $2 $3 $4printf s d d d .2f\n, $1, $2, $3, $4,total} Name 1st 2nd 3th TotalVBird 23000 24000 25000 72000.00DMTsai 21000 20000 23000 64000.00Bird2 43000 42000 41000 126000.00上面的例子有几个重要事项应该要先说明的所有的动作亦即在 {} 内的动作如果有需要多个指令辅助时可利用分号『;』间隔 或者直接以 [Enter]按键来隔开每个指令例如上面的 NR2 后面接的动作 利用 total ... 那个指令来指定加总而后续则以printf 来格式化输出逻辑运算当中如果是『等于』的情况则务必使用两个等号『』格式化输出时在 printf 的格式设定当中务必加上 \n才能进行分行与 bash shell 的变量不同在 awk 当中变量可以直接使用不需加上 $ 符号。利用 awk 这个玩意儿就可以帮我们处理很多日常工作了呢真是好用的很 此外 awk的输出格式当中常常会以 printf来辅助所以 最好您对 printf 也稍微熟悉一下比较好啦另外 awk 的动作内 {} 也是支持 if (条件) 的喔举例来说上面的指令可以修订成为这样的[rootlinux ~]# cat pay.txt | \ awk {if(NR1) printf s s s ss\n,$1,$2,$3,$4,Total}NR2{total $2 $3 $4printf s d d d .2f\n, $1, $2, $3, $4, total}你可以仔细的比对一下上面两个输入有啥不同从中去了解两种语法吧 我个人是比较倾向于使用第一种语法因为会比较有统一性啊^_^
http://www.zqtcl.cn/news/895202/

相关文章:

  • 记事本做网站素材代码国内十大4a广告公司
  • 一米八效果图网站商业网站平台
  • 做搜狗手机网站优化产品推广计划怎么写
  • 网站链接优化怎么做ftp服务器
  • 什么网站可以接单做海报网站信息员队伍建设方案
  • 淘宝联盟 网站怎么做网站运营推广方案设计
  • 网站建设数据库类型百度seo现状
  • 德州网站优化公司平面设计公司企业logo设计
  • 山东平台网站建设价位网站广告文案
  • 可以做哪方面的网站万网董事长是谁
  • 京东网站开发费用程序员找工作的网站
  • 怎么做网站首页psdwordpress 注册验证
  • 商丘做网站的公司有哪些郑州网站公司排名
  • 竞价网站与竞价网站之间做友情链接企业邮箱查询
  • 国外jquery网站wordpress 下一页 模板
  • 安卓手机做网站云南建设厅网站职称评定
  • 国外域名注册商网站邮箱登陆登录入口
  • 男女做那个的网站是什么深圳市8号公告
  • 做网站收款支付宝接口廊坊市网站建设公司
  • 文档下载网站 建设做cpa用什么网站
  • 网站制作合同注意事项百度网页版电脑版
  • 怎样做模板网站手机营销型网站制作
  • 如何采集网站内容如何做网站导航栏的搜索引擎优化
  • 网站关键词排名外包织梦大气婚纱影楼网站源码
  • 网站建设执行力冠县哪里有做网站的
  • 免费网站推广咱们做网络营销推广的应用场景
  • 深圳正规网站制作哪家公司好做网站代理属于开设赌场罪吗
  • 江西宜春市建设局网站wordpress博客下载器
  • 汕头站扩建效果图微信怎么引流营销呢
  • 小学学校网站建设计划wordpress博客示例