自己总结的Linux-Shell-脚本讲解+示例-精典版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LinuxShell脚本讲解+示例精华版1.Vi编辑器向下查找:在Normal模式下,“/”+Keyword,如:/tcp向上查找:在Normal模式下,“?”+Keyword,如:?tcp替换:在Normal模式下,“:s”+“/”+Sourceword+“/”+“Destword”,如::s/abc/bcd全部替换:在Normal模式下,“:s”+“/”+Sourceword+“/”+“Destword”+“/g”,如::s/ad/bc/g指定范围替换:在“:”与“s”间加入范围,如“:n1,n5s/abc/ddas/g”替换1至5行,“:1,$s/abc/ddas/g”替换全部2.Gedit编辑器图形界面编辑器,在命令行输入Gedit+文件名即可弹出编辑器并打开文件。优点:语法高亮,操作方便。缺点:要在图形界面下操作,远程连接比较慢。3.罗列文件的详细信息:ls-l如:ls-l*.txt可以列出所有以txt为后缀的文件的详细信息4.正则表达式符号意义*0个或多个在*字符之前那个普通字符.匹配任意字符^匹配行首,或后面字符的非$匹配行尾[]匹配字符集合\转义符,屏蔽一个元字符的特殊意义\\精确匹配符号\{n\}匹配前面字符出现n次\{n,\}匹配前面字符至少出现n次\{n,m\}匹配前面字符出现n次与m次之间*符号用于匹配前面一个普通字符的0次或多次重复hel*o:*符号前面的普通字符是l,*字符就表示匹配l字符0次或多次,如字符串helo、hello、hellllllo都可以由hel*o来表示.符号用于匹配任意一个字符„73.表示前面三个字符为任意字符,第4和第5个字符是7和3,最后一个字符为任意字符,如xcb738、4J973U都能匹配上述字符串^符号用于匹配行首,表示行首的字符是^字符后面的那个字符^cloud表示匹配以cloud开头的行$符号匹配行尾,$符号放在匹配字符之后a、b、1、2等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。micky$表示匹配以micky结尾的所有行^$表示空白行[]匹配字符集合,该符号支持穷举方法列出字符集合的所有元素[0123456789]、[0-9]„„[A-Za-z][A-Za-z]*匹配所有英文单词\符号是转义符,用于屏蔽一个元字符的特殊意义\.\$\^\\符号是精确匹配符号,该符号利用\符号屏蔽符号\the\精确匹配单词the,them,they等不匹配\{\}系列符号表示前一个字符的重复\{n\}:匹配前面字符出现n次,如JO\{3\}B匹配JOOOB\{n,\}:匹配前面字符至少出现n次,如JO\{3,\}B匹配JOOOB、JOOOOB、JOOOOOB等字符串\{n,m\}:匹配前面字符出现n次与m次之间,如JO\{3,6\}B匹配JOOOB、JOOOOOOB等字符串[a-z]\{5\}:匹配5个小写英文字母,比如hello、house等awk和Perl等Linux工具还支持正则表达式扩展出来的一些元字符,这些元字符如下表所示符号意义?匹配0个或1个在其之前的那个普通字符+匹配1个或多个在其之前的那个普通字符()表示一个字符集合或用在expr中|表示“或”意义,匹配一组可选的字符通配(globbing)是把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等,通配符与元字符意义不完全相同:*符号不再表示其前面字符的重复,而是表示任意位的任意字符?字符表示一位的任意字符^符号在通配中不代表行首,而是代表取反意义5.grep工具grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,grep也是Linux中最广泛使用的命令之一。grep[选项][模式][文件…],模式可以是字符串,也可以是变量,还可以是正则表达式,无论模式是何种形式,只要模式中包含空格,就需要使用双引号将模式括起来。模式代表要搜索的内容。如果没有[选项],命令的结果是包含目标内容的行的内容。选项意义-c只输出匹配行的数量-i搜索时忽略大小写-h查询多文件时不显示文件名-l只列出符合匹配的文件名,而不列出具体匹配行-n列出所有匹配行,并显示行号-s不显示不存在或无匹配文本的错误信息-v显示不包含匹配文本的所有行-w匹配整词-r递归搜索,不仅搜索当前工作目录,而且搜索子目录-E支持扩展的正则表达式-F不支持正则表达式,按照字符串的字面意思进行匹配6.POSIX字符类为了保持不同国家的字符编码的一致性,POSIX(PortableOperatingSystemInterface)增加了特殊的字符类,以[:classname]的格式给出,grep命令支持POSIX字符类类名意义[:upper:]表示大写字母[A-Z][:lower:]表示大写字母[a-z][:digit:]表示阿拉伯数字[0-9][:alnum:]表示大小写字母和阿拉伯数字[0-9a-zA-Z][:space:]表示空格或Tab键[:alpha:]表示大小写字母[a-zA-Z][:cntrl:]表示Ctrl键[:graph:]或[:print:]表示ASCII码33-126之间的字符[:xdigit:]表示16进制数字[0-9A-Fa-f]Linux系统支持三种形式的grep命令,通常将这三种形式的grep命令称为grep命令族,这三种形式具体为:grep:标准grep命令,支持基本正则表达式egrep:扩展grep命令,支持基本和扩展正则表达式,等价于grep–Efgrep:快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配,等价于grep-F7.sed工具sed是流编辑器,可对文本文件和标准输入进行编辑。sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,如果需要保存改动内容,可以选择使用下面两种方法:重定向,w编辑命令。○1命令行中的使用方法:sed[选项]‘sed命令’输入文件○2脚本文件,通过sed命令调用的方法:sed[选项]-fsed脚本文件输入文件,该方法脚本文件的首行不以#!/bin/sed-f开头○3将sed命令插入脚本文件后,直接执行该脚本:./sed脚本文件输入文件,该方法脚本文件的首行是#!/bin/sed–feg:sed-n-e‘/tcp/p’-e‘/tcp/=’type.txt打印出包含“tcp”所在的行以及其行号,且不打印文件整个文件本身。这个等同于sed-n-e‘/tcp/{p,=}’type.txt选项意义-n不打印所有行到标准输出-e表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略-f表示正在调用sed脚本文件8.sed命令sed经常和正则表达式结合使用选项意义p打印匹配行=打印文件行号a\在定位行号之后追加文本信息i\在定位行号之前插入文本信息d删除定位行c\用新文本替换定位文本s使用替换模式替换相应模式r从另一个文件中读文本w将文本写入到一个文件y变换字符q第一个模式匹配完成后退出l显示与八进制ASCII代码等价的控制字符{}在定位行执行的命令组n读取下一个输入行,用下一个命令处理新的行h将模式缓冲区文本拷贝到保持缓冲区H将模式缓冲区文本追加到保持缓冲区x互换模式缓冲区和保持缓冲区内容g将保持缓冲区内容拷贝到模式缓冲区G将保持缓冲区内容追加到模式缓冲区eg:sed-n‘$p’type.txt打印出type.txt文件的最后一行”$”是正则表达式,代表最后一行。sed-n‘2,10!p’type.txt打印出除第二行到第十行外的所有行。sed-n‘/tcp/,$p’type.txt打印出除包含“tcp”的第一行到整个文件的最后一行。9.sed定位文本选项意义xx为指定行号x,y指定从x到y的行号范围/pattern/查询包含模式的行/pattern/pattern/查询包含两个模式的行/pattern/,x从与pattern的匹配行到x号行之间的行x,/pattern/从x号行到与pattern的匹配行之间的行x,y!查询不包括x和y行号的行10.sed插入/追加文本在匹配行前/后面追加文件,一般通过文件完成eg:脚本文件insert.sh内容如下:#!/bin/sed-f/file:/i\Weinsertanewline调用命令:./insert.shtype.txt结果:在type.txt中包含“file:”的行的上面加入一行“Weinsertanewline”。把”/file:/i\”改成“/file:/a\”则可以在目标行后追加文本“Weinsertanewline”11.sed修改方本只需要将上例中的’i\’改成’c\’即可将目标行用脚本里的文本代替12.sed删除文本eg:sed-n‘/tcp/d’type.txt将type.txt文件中包含tcp的行删除13.sed替换文本替换用来替换目标字符串,而修改是替换目标字符串所在的行,替换文本的格式为:s/被替换的字符串/新字符串/[替换选项]选项意义g表示替换文本中所有出现被替换字符串之处p与-n选项结合,只打印替换行w文件名表示将输出定向到一个文件eg:sed-n‘s/被替换的字符串/新字符串/p’目标文件。这个与sed-n‘y/被替换的字符串/新字符串/’目标文件功能类似,不过y命令要求被替换的字符串和新字符串长度相同,否则报错,而s命令无此限制eg:sed-n‘s/tcp/udp/wnewtype.txt’type.txt将type.txt中的tcp用udp替换,并将替换后的行输出到newtype.txt文件中eg:sed-n‘1,5woutput.txt’input.txt将input.txt文件中的第一行到第五行输出到output.txt文件中eg:sed-n‘/tcpdump/rnewtype.txt’type.txt将newtype.txt中的内容插入到包含tcpdump的行的后面14.awk工具及awk系统变量awk认为输入文件是结构化的,awk将每个输入文件行定义为记录,行中的每个字符串定义为域,域之间用空格、Tab键或其他符号进行分割,分割域的符号就叫分隔符。awk工具通过脚本的两种用法和sed命令一样,直接命令形式调用的方法有些不一样,其调用方法为:awk[-F域分隔符]‘awk程序段’输入文件。缺省的域分隔符是空格或Tab(可以是这两者混合的)。eg:awk-F”\t”‘{print$2,$1}’type.txttype.txt内容如下所示1a1a2b2b结果:a1b2注$1表示第一个域,$0表示所有域awk定义了很多内建变量用于设置环境信息,我们称它们为系统变量,这些系统变量可分为两种:○1用于改变awk的缺省值,如域分隔符(FS);○2用于定义系统值,在处理文本时可以读取这些系统值,如记录中的域数量,当前记录数,当前文件名等,awk动态改变系统变量的值。$n当前记录的第n个域(n=1)$0记录的所有域ARGC命令行参数的数量ARGLND命令行中当前文件的位置(以0开始标号)ARGV命令行参数的数组CONVFMT数字转换格式ENVIRON环境变量关联数组ERRNO最后一个系统错误的描述FIELDWIDTHS字段宽度列表,以空格键分割FILENAME当前文件名FNR浏览文件的记录数FS字段分隔符,默认是空格键(和Tab)IGNORECASE布尔变量,如果为真,则进行忽略大小写的匹配NF当前记录中的域数量NR当前记录数OFMT数字的输出格式OFS输出域分隔符,默认是空格键ORS输出记录分隔符,默认是换行符RLENOTH由match函数所匹配的字符串长度RS记录分隔符,默认是空格键RSTART由match函数所匹配的字符串的第1个位置SUBSEP数组下标分隔符,默认值是03415.awk关系、布尔运算符、表达式运算符意义小于大于=小于等于=大于等于==

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功