sed,grep,awk是三个很实用的文字处理命令


所属类别:Linux

文章作者:topshelley2008

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


sed,grep,awk是三个很实用的文字处理命令,他们能和正则表达式能够很多的结合,让你的脚本搜索显现出强大的能力。 1. 正则表达式: 常用的元字符 . 匹配除换行符以外的任意字符 \w匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 以上元字符字母变为大写想反匹配 ^ 匹配字符串的开始 $ 匹配字符串的结束 [^x]匹配除了x以外的任意字符 [^aeiou]匹配除了aeiou这几个字母以外的任意字符 常用限定符 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次{n,m} 重复n到m次 *?重复任意次,但尽可能少重复 +?重复1次或更多次,但尽可能少重复 ?? 重复0次或1次,但尽可能少重复 {n,m}? 重复n到m次,但尽可能少重复 {n,}? 重复n次以上,但尽可能少重复捕获(exp) 匹配exp,并捕获文本到自动命名的组里(?exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号位置指定(?=exp) 匹配exp前面的位置(?<=exp)匹配exp后面的位置(?!exp) 匹配后面跟的不是exp的位置(?<!exp)匹配前面不是exp的位置注释(?#comment) 这种类型不对正则表达式的处理产生任何影响,用于提供注释让人阅读其它表达式\a 报警字符(打印它的效果是电脑嘀一声)\b 通常是单词分界位置,但如果在字符类里使用代表退格\t 制表符,Tab\r 回车\v 竖向制表符\f 换页符\n 换行符\e Escape\0nn ASCII代码中八进制代码为nn的字符\xnn ASCII代码中十六进制代码为nn的字符\unnnn Unicode代码中十六进制代码为nnnn的字符\cN ASCII控制字符。比如\cC代表Ctrl+C\A 字符串开头(类似^,但不受处理多行选项的影响)\Z 字符串结尾或行尾(不受处理多行选项的影响)\z 字符串结尾(类似$,但不受处理多行选项的影响)\G 当前搜索的开头grepgrep格式:grep [选项]基本正则表达式[文件]这里基本正则表达式可为字符串。 在用grep进行查询时注意事项:1. 查询字符串特别是多个字符时应该用“”,如 grep “linuxdn” 这样做的好处有两个,一是防止被误认为shell命令;二是防止被误认为文件,如 grep linuxdn dd查询结果可能为” No such file or directory”.2. 在调用变量也要使用双引号,诸如:grep “$linuxdn” file,如果不这样,将,没有返回结果。3. 在调用模式匹配时,应使用单引号如 grep ‘l…n’ file.4. 查询特殊字符进要用 \ grep选项 常用选项-c 只输出匹配行的计数。-i 不区分大小写(只适用于单字符)。-h 查询多文件时不显示文件名。-l 查询多文件时只输出包含匹配字符的文件名。-n 显示匹配行及行号。-s 不显示不存在或无匹配文本的错误信息。-v 显示不包含匹配文本的所有行。 其它选项 -a 忽略二进制数据 -A 搜索符合字符串后依指定行数之后行数的所有显示 -b 显示符合模板样式的前一行,标出第一个字的位置 -B搜索符合字符串后依指定行数之前行数的所有显示 -C 输出匹配行的计数与之后指定行的行数内容 -d 指定搜索的为目录 -e 搜索指定字符串的文件内容(模板样式) -E搜索指定字符串的文件内容(普通表示法) -f 指定模板文件 -F 模板样式为固定字符串列表 -G模板样式为普通列表 -H查询多文件时显示文件名 -I 列出文件内容符合指定模板的文件名 -L列出文件内容不符合指定模板的文件名 -q 不显示任何信息 -V显示版本信息 -y 与-I相同 --help 帮助信息 grep 举例说明 有interface文件内容如下:# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto lo eth1iface lo inet loopback# The primary network interfaceallow-hotplug eth0iface eth0 inet static address 193.168.20.203 netmask 255.255.255.0 network 193.168.20.0 broadcast 193.168.20.255 gateway 193.168.20.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 202.106.0.20 dns-search rising.com.cniface eth1 inet static address 192.168.110.148 netmask 255.255.255.0有passwd 文件内容如下:root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/bin/shman:x:6:12:man:/var/cache/man:/bin/shlp:x:7:7:lp:/var/spool/lpd:/bin/shmail:x:8:8:mail:/var/mail:/bin/shnews:x:9:9:news:/var/spool/news:/bin/shuucp:x:10:10:uucp:/var/spool/uucp:/bin/shproxy:x:13:13:proxy:/bin:/bin/shwww-data:x:33:33:www-data:/var/www:/bin/shbackup:x:34:34:backup:/var/backups:/bin/shlist:x:38:38:Mailing List Manager:/var/list:/bin/shirc:x:39:39:ircd:/var/run/ircd:/bin/shgnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/shnobody:x:65534:65534:nobody:/nonexistent:/bin/shrising:x:1000:1000:rising,,,:/home/rising:/bin/bashsshd:x:100:65534::/var/run/sshd:/usr/sbin/nologinmysql:x:101:103:MySQL Server,,,:/var/lib/mysql:/bin/falseDebian-exim:x:102:104::/var/spool/exim4:/bin/falseftp:x:103:65534::/home/ftp:/bin/false 1. 在多个文件中查询字符串如果要在当前目录下所有.txt文件中查找字符串“ linuxdn”,方法如下:# grep "linuxdn" *.txe或在所有文件中查询单词“ linuxdn ”# grep "linuxdn" *2. 行匹配 查询# grep -c "1" passwd10grep返回数字10,意义是有10行包含字符串“1”。3. 显示显示满足匹配模式的所有行行数#grep -n "1" passwd2:daemon:x:1:1:daemon:/usr/sbin:/bin/sh7:man:x:6:12:man:/var/cache/man:/bin/sh11:uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh12:proxy:x:13:13:proxy:/bin:/bin/sh17:gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh19:rising:x:1000:1000:rising,,,:/home/rising:/bin/bash20:sshd:x:100:65534::/var/run/sshd:/usr/sbin/nologin21:mysql:x:101:103:MySQL Server,,,:/var/lib/mysql:/bin/false22:Debian-exim:x:102:104::/var/spool/exim4:/bin/false23:ftp:x:103:65534::/home/ftp:/bin/false4. 显示非匹配行#grep –v "1" passwdroot:x:0:0:root:/root:/bin/bashbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/bin/shlp:x:7:7:lp:/var/spool/lpd:/bin/shmail:x:8:8:mail:/var/mail:/bin/shnews:x:9:9:news:/var/spool/news:/bin/shwww-data:x:33:33:www-data:/var/www:/bin/shbackup:x:34:34:backup:/var/backups:/bin/shlist:x:38:38:Mailing List Manager:/var/list:/bin/shirc:x:39:39:ircd:/var/run/ircd:/bin/shnobody:x:65534:65534:nobody:/nonexistent:/bin/sh5. 精确匹配使用geep精确匹配方式是在抽取字符串后加\ >假定在interface中精确抽取含有203的一行方法如下:#grep '203\>' interfaces address 193.168.20.2036. 带范围匹配如在interfacek 查找含有192 和 193 的行#grep '19[23]' interfaces address 193.168.20.203 network 193.168.20.0 broadcast 193.168.20.255 gateway 193.168.20.1 address 192.168.110.1487. 带元字符查询查询interface首行是allow#grep '^allow' interfacesallow-hotplug eth0查询首行不是address#grep '^[^address]' interfaces# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceiface lo inet loopback# The primary network interfaceiface eth0 inet static address 193.168.20.203 netmask 255.255.255.0 network 193.168.20.0 broadcast 193.168.20.255 gateway 193.168.20.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 202.106.0.20 dns-search rising.com.cniface eth1 inet static address 192.168.110.148 netmask 255.255.255.08. 次数查询相关内容查询interface中l出现有2次的行#grep 'l\{2,\}' interfacesallow-hotplug eth0 # dns-* options are implemented by the resolvconf package, if installed9. grep 利用与,或操作查询193或192出现的行#grep -E '192193' interfaces address 193.168.20.203 network 193.168.20.0 broadcast 193.168.20.255 gateway 193.168.20.1 address 192.168.110.14810. 查询空行,可利用^ $进行查询 #grep ‘^$’ interface11. 利用正则表达式进行查询 查询interface 中193.168.20.*的IP#grep '193.168.20.[0-9]\{1,3\}' interfaces address 193.168.20.203 network 193.168.20.0 broadcast 193.168.20.255 gateway 193.168.20.112. 利用系统查询grep 的一个强大功能就是和一些系统命令结合使用比如ls,find,ps等,关于这方面例子就太多了,我就不再说了,等大家在工作学习中慢慢体会吧。今天很累了写了这么多,可以休息一会了,哈哈。以后我们再说关于awk,和sed。

相关信息

· “MSN密码窃贼”介绍及防范措施

· 物流行业发展前景分析

· 如何学好J2ME

· 使用ADO.NET配置SQL Server事务处理








....

49604 16506