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

网站建设公告网站建设立项报告

网站建设公告,网站建设立项报告,浙江建设工程信息网查询,网站如何做搜索引擎文章目录1、sed的简单介绍2、sed的使用方法2.1 命令行格式2.2 案例2.3 sed结合正则使用2.4 脚本格式3、awk的简单介绍4、awk的使用方法4.1 命令行模式4.2 脚本模式5、awk内部相关变量5.1 案例6、awk工作原理7、awk进阶使用8、awk脚本编程8.1 案例1、sed的简单介绍 sed是流编辑… 文章目录1、sed的简单介绍2、sed的使用方法2.1 命令行格式2.2 案例2.3 sed结合正则使用2.4 脚本格式3、awk的简单介绍4、awk的使用方法4.1 命令行模式4.2 脚本模式5、awk内部相关变量5.1 案例6、awk工作原理7、awk进阶使用8、awk脚本编程8.1 案例1、sed的简单介绍 sed是流编辑器用于处理文件 sed是一行一行读取文件内容并按照要求进行处理把处理后的结果输出到屏幕 1、首先sed读取文件中的一行内容,把其保存在一个临时缓存区中(也称为模式空间) 2、然后根据需求处理临时缓冲区中的行完成后把该行发送到屏幕上 总结 1.由于sed把每一行都存在临时缓冲区中,对这个副本进行编辑所以不会直接修改原文件 2.Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作对文件进行过滤和转换操作 2、sed的使用方法 sed常见的语法格式有两种一种叫命令行模式另一种叫脚本模式。 2.1 命令行格式 语法格式 sed [options] 处理动作 文件名常见选项 选项说明备注-e进行多项(多次)编辑直接在命令列模式上进行 sed 的动作编辑-n取消默认输出在一般 sed 的用法中所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-r使用扩展正则表达式sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)-i原地编辑(修改源文件)直接修改读取的文件内容而不是输出到终端-f指定sed脚本的文件名直接将 sed 的动作写在一个文件内 -f filename 则可以运行 filename 内的 sed 动作 常见的处理动作 以下所有的动作都要在单引号里 动作说明备注‘p’打印‘i’在指定行之前插入内容类似vim里的大写O‘a’在指定行之后插入内容类似vim里的小写o‘c’替换指定行所有内容‘d’删除指定行 2.2 案例 文件准备 #a.txt root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4: adm:/var/adm:/sbin/nologin lp:x:4:7:tp:/var/spool/lpd:/sbin/nologin 298374837483 172.16.0.254 10.1.1.1打印文件内容 sed a.txt #对文件什么都不做但是由于没有-n参数因此还会将文件的内容打印到屏幕sed -n p a.txt #打印每一行并取消默认输出sed -n 1p a.txt #打印第一行sed -n 2p a.txt #打印第二行sed -n 1,5p a.txt #打印1-5行sed -n $p a.txt #打印最后一行增加文件内容(单独成行) sed $a99999 a.txt #文件最后一行后面增加内容sed a99999 a.txt #文件每行后面增加内容sed 5a99999 a.txt #文件第5行后面增加内容sed $i99999 a.txt #文件最后一行的前面增加内容sed i99999 a.txt #文件每行的前一行增加内容sed 6i99999 a.txt #文件第6行前一行增加内容sed /^uucp/ihello #以uucp开头行的前一行插入内容#在第1行前连续插入3行内容第1中写法只会将要插入的内容看成一行应该遵循第2种写法 sed -n 1i\hello\world\888 a.txt 结果: helloworld888sed 1i\hello\world\fl a.txt 结果: hello world flsed 2,4a999 a.txt #在2-4行的每一行后面一行都增加内容修改文件内容 sed 5chello world a.txt #替换文件第5行的内容sed chello world a.txt #替换文件所以内容sed 1,5chello world a.txt #替换文件1到5行内容为hello world不是1到5行每一行都替换sed /^user01/c888888 a.txx #替换user01开头的行sed如果需要结合正则需要将正则表达式用斜杠包裹起来例如: sed /^adm/chello fl a.txt删除文件内容 sed 1d a.txt #删除文件第一行sed 1,5d a.txt #删除文件1到5行sed $d a.txt #删除文件最后一行sed /[0-9]/d a.txt #删除包含数字的行sed -r /([0-9]\.){1,3}[0-9]{1,3}/d a.txt #删除文件中的ip地址-r表示支持扩展正则对文件进行搜索替换操作 语法sed 选项 s/搜索内容/替换内容/动作 需要处理的文件 其中s表示search搜索。斜杠/表示分隔符可以自定义。动作一般是打印p和全局替换g。如果不加g一行中有多个匹配到了只会替换第一个加g则全部替换 sed -n s/root/ROOT/gp a.txt #全文搜索root并替换成ROOTsed -n s/^#//gp a.txt #删除首行以#开头的#相当于取消注释sed -n s/sbin/nologinflgp a.txt #将全文中的/sbin/nologin替换为fl 或者写为sed -n s/\/sbin\/nologinflgp a.txtsed -n 10s/sbin/nologinflgp a.txt #将第10行中的/sbin/nologin替换为fl如果没有就不处理sed -n 1,5s/^/#/gp a.txt #注释前5行sed -n s#\(10.1.1.\)1#\1fl#gp a.txt #(10.1.1.)表示\1把最后一个1替换为fl其他命令 命令含义r从另外文件读取内容w内容另存为保存查找串以便在替换串中引用打印行号!对所选行以外的所有行应用命令,放到行数之后q退出 sed 3r /etc/hosts a.txt #将/etc/hosts中的数据读到a.txt的第3行之后的位置 [rootfl Shell]# sed 3r /etc/hosts a.txt root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 127.0.0.1 fl fl adm:x:3:4: adm:/var/adm:/sbin/nologin lp:x:4:7:tp:/var/spool/lpd:/sbin/nologin 298374837483 172.16.0.254 10.1.1.1sed 1,5w b.txt a.txt #将a.txt中的1-5行保存到b.txt中sed -n s/^lp/#/gp a.txt #在以lp开头的前面添加#号 和\(\)的作用相同 #lp:x:4:7:tp:/var/spool/lpd:/sbin/nologinsed -n s/^lp/#/gp a.txt #在以lp开头的后面添加#号 lp#:x:4:7:tp:/var/spool/lpd:/sbin/nologinsed -n 1,5!p a.txt #打印非1到5行sed -ne /root/p a.txt -ne /root/ #打印root所在的行并打印行号sed -e /^#/d -e /^$/d a.txt #删除以#开头行(取消注释)删除空行 sed -r /^#|^$/d a.txt2.3 sed结合正则使用 sed 选项 sed’命令或者正则表达式或者地址定位文件名 1.地址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的合。 2.如果没有指定地址. sed将外理输入文件的所有行。 正则说明案例/key/查询包含关键字的行sed -n ‘/root/p’ a.txt/key1/,/key2/匹配包含两个关键字之间的行sed -n ‘/^adm/, /^mysql/p’ a.txt/key/,X从匹配关键字的行开始到文件第x行之间的行(包含关键字所在行)sed -n ‘/^ftp/,7p’x,/key/从文件的第x行开始到与关键字的匹配行之间的行x,y!不包含x到y行 sed -nr /^lp | ^mysql/p a.txt #找出以lp或者mysql开头的行sed -n /sync/,8p a.txt #打印sync所在的行到第8行之间所有的行闭区间sed -n 3,/^halt/p a.txt #从第3行开始打印以halt开头的行之间的所有内容闭区间2.4 脚本格式 用法 #sed -f scripts.sh file //使用脚本处理文件 建议使用 ./sed.sh file脚本的第一行写上 #!/bin/sed -f注意事项 脚本文件是一个sed的命令行清单。’ commands’ 在每行的末尾不能有任何空格、制表符(tab)或其它文本。 如果在一行中有多个命令应该用分号分隔。 不需要且不可用引号保护命令 #号开头的行为注释 3、awk的简单介绍 awk概述 awk是一种编程语言主要用于在linux/unix下对文本和数据进行处理是linux/unix 下的一个工具。数据可以来自标准输入、一个或多个文件或其它命令的输出。 awk的处理文本和数据的方式逐行扫描文件默认从第一行到最后一行寻找匹配的特定模式的行并在这些行上进行你想要的操作。 awk能干啥 1、awk用来处理文件和数据的是类unix下的一个工具也是一种编程语言 2、可以用来统计数据比如网站的访问量访问的IP量等等 3、支持条件判断支持for和while循环 4、awk的使用方法 4.1 命令行模式 语法结构 awk 选项 命令部分 文件名特别说明: 引用Shell变量需要用双引号引起常用选项介绍 -F定义字段分隔符默认分割符是空格-v定义变量并赋值 ‘命名部分说明’ 正则表达式地址定位 /root/{awk语句} sed中: /root/p NR1,NR5{awk语句} sed中: 1,5p /^root/,/^ftp/{awk语句} sed中: /^root/,/^ftp/p{awk语句1;awk语句2;…} {print $0;print $1} sed中: p NR5{print $0} sed中: 5p 注: awk命令语句间用分号间隔BEGIN…END… BEGIN{awk语句};{处理中};END{awk语句} BEGIN{awk语句};{处理中} {处理中};END{awk语句}4.2 脚本模式 脚本编写 #!/bin/awk -f 一以下是awk引号里的命令清单不要用引号保护命令多个命令用分号间隔 BEGIN{FS:} NR1,NR3{print $1\t$NF} ...脚本处理 方法1: awk 选项 -f awk的脚本文件 需要处理的文本文件 awk -f awk.sh filenamesed -f sed.sh -i filename方法2: ./awk的脚本文件(或者绝对路径) 需要处理的文本文件 ./awk.sh filename./sed.sh filename 5、awk内部相关变量 变量变量说明备注$0当前处理的所有记录$1,$2,$3…$n文件中每行以间隔符分割的不同字段间隔符默认是空格awk -F:‘{print $1,$3}’NF当前记录的字段数(列数)awk -F:‘{print NF}’$NF最后一列$(NF-1)表示倒数第二列FNR/NR行号FS定义间隔符‘BEGIN{FS“:”};{print $1,$3}’OFS定义输出字段分隔符默认空格‘BEGIN{OFS“\t”};print $1,$3}’RS输入记录分割符默认换行‘BEGIN{RS“\t”};{print $0}’ORS输出记录分割符默认换行‘BEGIN{ORS“\n\n”};{print$1,$3}’FILENAME当前输入的文件名 5.1 案例 文本准备 head /etc/passwd 1.txt tail -3 /etc/passwd 1.txt[rootfl Shell]# cat 1.txt root:x:0:0:root:/root:/bin/bash 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 halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin fl:x:1000:1000::/home/fl:/bin/bash yunwei:x:1001:1001::/home/yunwei:/bin/bash user1:x:1002:1002::/home/user1:/bin/bashawk {print $0} 1.txt #打印每一行(因为没有分隔符$0表示文本中的每一行)awk NR1,NR5{print $0} 1.txt #打印1-5行同下 awk NR1 NR5{print $0} 1.txtawk NR1 || NR5{print $0} 1.txt #打印1和5行awk -F: {print $1,$(NF-1),$NF} 1.txt #打印每一行以冒号分割的第一列倒数第二列和最后一列awk -F: {print NF} 1.txt #每一行以冒号分割并打印每一行的列数awk -F: /root/{print $1,$NF} 1.txt #打印包含root的以冒号分割的第一行和最后一行awk NR1 NR5 /^root/{print $0} 1.txt #打印1-5行中以root开头的行awk BEGIN{FS:;OFS};{print $1,$NF} 1.txt #打印以冒号分割的第一列和最后一列列与列之间用作为分隔符同下 awk BEGIN{FS:;OFS};{print $1$NF} 1.txt #分隔符要用双引号引起来6、awk工作原理 awk -F: {print $1,$3} /ect/passwdawk使用一行作为输入并将这一 行赋给内部交量50每行也可称为一个记录以换行符(RS)结束每行被间隔符:(默认为空格或制表符)分解成字段(或域)每个字段存储在已编号的变量中从$1开始awk使用print函数打印字段打印出来的字段会以空格分隔因为$1$3之间有一个逗号。逗号比较特殊它映射为另一个内部变量称为输出字段分隔符OFSOFS默认为空格awk处理完一行后, 将从文件中获取另一行并将其存储在$0中覆盖原来的内容然后将新的字符串分隔成字段并进行处理。该过程将持续到所有行处理完毕 7、awk进阶使用 格式化的输出print和printf print函数 类似echo [rootfl Shell]# date | awk {print Month: $2 \nYear: $NF} Month: Feb Year: 2023printf函数 类似echo -n [rootfl Shell]# awk -F: NR1,NR3{printf %-15s %-10s %-15s\n,$1,$2,$3} /etc/passwd root x 0 bin x 1 daemon x 2 %s 字符类型 strings %d 数值类型 - 表示左对齐默认是右对齐 %-15s 表示向左对齐15个字符如果不够用空格填充 printf默认不会在行尾自动换行需要我们手动加上\nawk变量定义 [rootfl Shell]# awk -v NUM3 -F: NR1{print NUM} /etc/passwd 3 [rootfl Shell]# awk -v NUM3 -F: NR1{print $NUM} /etc/passwd 0[rootfl Shell]# awk -v num1 BEGIN{print num} 1 [rootfl Shell]# awk -v num1 BEGIN{print $num}注意: awk中调用定义的变量不需要加$因为$数字表示特定分隔符分割后的某一列awk中BEGIN…END使用 BEGIN表示在程序开始之前执行 END表示所有文件处理完后执行 用法‘BEGIN{开始处理之前};{处理中};END{处理结束后}’ 案例1打印最后一列和倒数第二列(登录shell和家目录) [rootfl Shell]# awk -F: BEGIN{printf Login_shell\tLogin_home\n********************\n};{printf $NF\t$(NF-1)\n};END{printf *******************\n} 1.txt Login_shell Login_home ******************** /bin/bash /root /sbin/nologin /bin /sbin/nologin /sbin /sbin/nologin /var/adm /sbin/nologin /var/spool/lpd /bin/sync /sbin /sbin/shutdown /sbin /sbin/halt /sbin /sbin/nologin /var/spool/mail /sbin/nologin /root /bin/bash /home/fl /bin/bash /home/yunwei /bin/bash /home/user1 *******************案例2打印/etc/passwd里的用户名、家目录以及登录shell [rootfl Shell]# awk -F: BEGIN{OFS\t\t;print u_name\t\th_dir\t\tshell\n********************};{printf %-20s %-20s %-20s\n,$1,$(NF-1),$NF};END{print ********************} 1.txt u_name h_dir shell ******************** root /root /bin/bash bin /bin /sbin/nologin daemon /sbin /sbin/nologin adm /var/adm /sbin/nologin lp /var/spool/lpd /sbin/nologin sync /sbin /bin/sync shutdown /sbin /sbin/shutdown halt /sbin /sbin/halt mail /var/spool/mail /sbin/nologin operator /root /sbin/nologin fl /home/fl /bin/bash yunwei /home/yunwei /bin/bash user1 /home/user1 /bin/bash ********************awk和正则的综合运用 这里只写了之前没有出现过的正则符号 运算符说明~匹配!~不匹配 案例 awk NR1,/^lp/{print $0} 1.txt #打印从第一行开始到以lp开头的行中间所有的行闭区间awk /^lp/,NR10{print $0} 1.txt #打印以lp开头的行到第10行中间所有的行闭区间awk /^root/ || /^lp/{print $0} 1.txt #打印以root开头或者以lp开头的行awk NR1 NR 5 $0 ~ /bash$/{print $0} 1.txt #打印1-5行中以bash结尾的行案例3打印IP地址 方法1: [rootfl Shell]# ifconfig eth0 | awk NR2{print $0} | awk -F[ ] {print $3} 192.168.0.207方法2: [rootfl Shell]# ifconfig eth0 | grep -w inet | awk -F[ ] {print $3} 192.168.0.207方法3: [rootfl Shell]# ifconfig eth0 | awk -F[ ] /inet/{print $3} | awk NR1{print $0} 192.168.0.2078、awk脚本编程 流程控制语句 if结构 格式: awk 选项 正则地址定位{awk语句} 文件名 { if(表达式) {语句1;语句2;...}}awk -F: {if($3500 $360000) {print $1,$3} } /etc/passwd[rootfl Shell]# awk -F: {if($30) {print $1是管理员} } /etc/passwd root是管理员[rootfl Shell]# awk -F: BEGIN{if($(id -u)0) {print 当前用户是admin}} 当前用户是adminif…else结构 格式: {if(表达式) {语句1;语句2;...} else {语句1;语句2;...}}[rootfl Shell]# awk -F: NR1,NR3{if($30) {print $1是管理员} else {print $1不是管理员}} /etc/passwd root是管理员 bin不是管理员 daemon不是管理员[rootfl Shell]# awk -F: BEGIN{if($(id -u)!0) {print 当前用户不是admin} else {print 当前用户是admin}} 当前用户是adminif…else if…eles结构 格式: {if(表达式1) {语句1;语句2;...} else if(表达式2) {语句1;语句2;...} else {语句1;语句2;...}}[rootfl Shell]# awk -F: {if($30) {print $1是管理员} else if($31 $3499 || $365534) {print $1是系统 用户} else {print $1是普通用户}} 1.txt root是管理员 bin是系统用户 daemon是系统用户 adm是系统用户 lp是系统用户 sync是系统用户 shutdown是系统用户 halt是系统用户 mail是系统用户 operator是系统用户 fl是普通用户 yunwei是普通用户 user1是普通用户[rootfl Shell]# awk -F: {if($30) {i} else if($31 $3499 || $365534) {j} else {k}};END{print 管 理员的个数为:i\n系统用户的个数为:j\n普通用户的个数为k} 1.txt 管理员的个数为:1 系统用户的个数为:9 普通用户的个数为3循环语句 打印1-5 awk BEGIN{for(i1;i5;i) {print i}} awk BEGIN{i1;while(i5) {print i; i}}打印1-10中的奇数 awk BEGIN{for(i1;i10;i2) {print i}} awk BEGIN{i1;while(i10) {print i; i2}}计算1-5的和 awk BEGIN{for(i1;i5;i) {sumi};{print sum}} awk BEGIN{i1;while(i5) {sumi;i};{print sum}}[rootfl Shell]# awk BEGIN{for(i1;i5;i) {for(j1;ji;j) {printf j};{print}}} 1 12 123 1234 123458.1 案例 统计系统中各个类型的shell [rootfl Shell]# awk -F: {shells[$NF]};END{for(i in shells) {print i\tshells[i]}} /etc/passwd /bin/sync 1 /bin/bash 4 /sbin/nologin 17 /sbin/halt 1 /sbin/shutdown 1统计该服务器的所有访问状态 [rootfl Shell]# netstat -napt | grep ^tcp | awk -F[ ] {states[$6]};END{for(i in states) {print i:states[i]}} LISTEN:5 ESTABLISHED:9统计访问网站的每个IP的数量 ss -antp | grep 80 | awk -F: !/LISTEN/{ip_count[$(NF-1)]};END{for(i in ip_count) {print i:ip_count[i]}} | sort -k2 -rn | head
http://www.hkea.cn/news/14496643/

相关文章:

  • 做网络销售哪些网站比较好360度全景街景地图
  • wordpress博客页面修改做搜索引擎优化网站费用
  • 网站信息备案变更 哪里做成都网络营销策划公司
  • t么做文献索引ot网站工作室怎么注册
  • 福建省住房和城乡建设厅网站电话wordpress配置文件下载
  • 信用中国 网站截图怎么做多钱网网站
  • 网站建设 小程序开发射阳网页设计
  • 城关区建设局网站网站服务包括什么
  • 学做网站平台软件工程最吃香的三个专业
  • 在网站建设中经历的流程wordpress 新建
  • 网站尺寸自适应推荐网址
  • 网站开发人员的前景宁波网站建设信息
  • 思淘网站建设电商网页的特点
  • 网站怎么盈利站长工具seo综合查询引流
  • 定制高端网站的公司龙岗 营销型网站建设
  • 海外访问国内网站 dns全国设计网站建设
  • 网站创建服务wordpress 下雪插件
  • 如何进行网站性能优化企业邮箱注册免费申请
  • 如何做个购物网站河北邢台房价多少钱一平方
  • 推荐昆明做网站建设深圳公司网站
  • 军队房地产与建设工程法律实务在哪个网站可以购买seo自媒体运营技巧
  • 伍佰亿书画网网站临沂营销网站建设
  • 哪个网站是专门做封面素材响应式网站设计建设制作
  • 企业网站的制作及维护莱芜网站建设案例
  • 北京网站建设小公司有哪些wordpress p=29
  • 长春网站建设首选网诚传媒_宝塔面板wordpress数据库
  • visual studio 2010 网站开发教程杭州网站建设优化案例
  • 如何用frontpage2003做网站wordpress电商支付宝微信
  • 电商网站建设需求wordpress 免费中文模板
  • 会计网站建设意义开发一个网站多少钱啊