正则表达式含义与重组:用单个字符串来叙述照旧合营一二种符合某些句法规则的字符串,一般是由一般性字符与特殊字符组成

摘要:其三章研讨的是编写制定Shell脚本时平日使用的七个基本操作。第5章总共介绍了约30种处理公事文件的好用工具。

探寻目录下的享有文件中是或不是带有某些字符串 
find .|xargs grep -ri “IBM” 
找寻目录下的持有文件中是或不是含有有些字符串,并且只打字与印刷出文件名 
find .|xargs grep -ri “IBM” -l 
1.正则表明式  
  (1)正则表达式一般用来讲述文本形式的非正规用法,由平日字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。 
  (2)基本元字符集及其含义 
      ^ :只匹配行首。   如^a 匹配以a开头的行abc,a2e,a12,aaa,…… 
awk基础笔记,文本处理工科具。      $ :只匹配行尾。   如^a 匹配以a结尾的行bca,12a,aaa,……. 
      * :匹配0个或多个此单字符。 如(a)* 匹配 空,a,aa,aaa,…. 
      []
:只匹配[]内字符。可以是三个单字符,也得以是字符体系,用”,”将当中要合作的不比字符串分开。也能够行使-来表示[]内字符系列的限制,如[1-5]表示[12345] 
      \ :只用来遮掩1个元字符的独特意义。
如\*,\’,\”,\|,\+,\^,\. 等 
      .:(点)只格外任意单字符。 
      pattern\{n\}:只用来同盟前面pattern出现的次数.n为次数。如a\{2\}匹配aa. 
      pattern\{n,\}:含义同上,但次数至少为n.如a\{2,\}匹配aa,aaa,aaaa,….. 
      pattern\{n,m\}:含义同上,但次数在n和m之间。如a\{2,4\}匹配aa,aaa,aaaa三个 
  (3)举例表达: 
      ^$ :匹配空行 
      ^.$ :匹配包括2个字符的行 
    \*\.pas :匹配以*澳门金沙国际,.pas结尾的有着字符或文件 
    [0123456789]或[0-9] :假定要合营任意1个数字 
    [a-z] :任意小写字母 
    [A-Za-z] :任意大小写字母 
    [S,s] :匹配大小写S 
    [0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}
:匹配IP地址 [0-9]\{3\}多个0-9构成的字符串;\.
:匹配点(注意那里点是越发的字符,所以要用”\”来屏蔽其意义) 
2.find介绍
  (1)查找具有有些特点文件的授命,可遍历当前目录甚至于整个文件系统来查阅有些文件或目录,其遍历大的文件系统时一般位于后台执行。 
  (2)find命令的形似方式 
      find pathname -options [-print -exec -ok] 
      -pathname
:find命令所查找的目录路径。如用”.”来代表近来的目录,用/来代表系统根目录 
      -print :find命令将合作的文件输出到正式输出 
      -exec:
find命令对一双两好的文件实施该参数所提交的shell命令,相应的下令情势为 
        ‘command'{} \; (注意{}和\以内的空格) 
      -ok 和
-exec的功力一样,只不过以一种越发安全的形式来实施该参数所付出的shell命令,在实践每二个下令以前,都会交到提醒,让用户来规定是或不是履行。 
    options有如下两种: 
    -name :依据文件名查找文件 
    -perm :遵照文件权限来查找文件 
    -user :遵照文件属主来查找文件 
    -group :遵照文件所属的组来查找文件 
    -mtime -n +n
遵照文件的更动时间来查找文件,-n代表文件更改时间距未来n天之内,+n代表文件更改时间距未来n天以前。find命令还有-atime
和-ctime选项,但它们都和-mtime选项相似。 
    -size
n[c]查找文件长度为n块的文件,带有c时表示文件长度以字节计。 
    -nogroup
查找无有效所属组的文件,即该公文所属的组在/etc/groups中不存在 
    -newer file1 !file2查找更改时间比文件file1新但比文件file2旧的文书 
    -depth 先查找钦命目录有无匹配文件,若无则再在子目录中查找 
    -type 查找某一品种的文本,如 
      b :块设备文件 
      d:目录 
      e:字符设备文件 
      p;管道文件 
      l:符号链接文件 
      f:普通文书 
  (3)find命令举例 
      find -name “*.txt” -print 查找txt结尾的文件并出口到显示器上 
      find /cmd “.sh” -print 查找/cmd目录下有所sh文件,并出口 
      find . -perm 755 -print 查找当前目录下放权力限为755的公文,并出口 
      find `pwd` -user root -print
查找当前目录下属主为root的文本,并出口 
      find ./ -group sunwill -print
查找当前目录下所属主是sunwill的文书 
      find /var -mtime -5 -print
查找/var目录下转移时间为5天内的拥有文件 
      find /var -mtime +5 -print
查找/var目录下转移时间为5天以前的享有文件 
      find /var -newer “myfile1” ! -newer “myfile2” -print
查找/var目录下比myfile1新,然而比myfile2旧的持有文件。 
      find /var -type d -print 查找/var目录下具有目录 
      find /var -type l -print 查找/var目录下拥有的标志链接文件。 
      find . -size +1000000c -print
查找当前目录下超过一千000字节的文件 
      find / -name “con.file” -depth -print
查找根目录下有无”con.file”,若无则在其子目录中查找 
      find . -type f -exec ls -l {} \;
查找当前目录下是或不是有经常文书,若有则实施ls -l 
    (4)xargs命令 
      在
使用find命令的-exec选项处理匹配到的文本时,find命令将富有匹配到的公文一起传递给exec。不幸的是,有个别系统对能够传递给exec的命
令长度有限定,那样find命令运营几分钟今后就是出现溢出荒唐。错误信息日常是“参数列太长”或“参数列溢出”。那正是xargs的用途所在,尤其是与
find命令一道使用,exec会倡导八个经过,而xargs会多少个,只有3个 
      find ./ -perm -7 -print | xargs chmod o-w
查找权限为7的文本并传递给chmod处理 
3.grep介绍   (1)grep 的形似格式为 grep [options] 基本正则表达式
[文件] 
      字符串参数最佳利用是双引号括,一是防止被误解为shell命令,二是足以用来探寻八个单词组成的字符串 
      -c:只输出匹配行的记数 
      -i:不区分轻重缓急写(只适用于单个字符) 
      -h:查询五个文件时不呈现文件名 
      -H:只突显文件名 
      -l:查询多文件时只输出包含匹配字符的文书名 
      -n:只显示匹配行及其行号 
      -s:不显得不存在或无匹配文本的错误音讯。 
      -v:显示不带有匹配文本的保有行。 
  (2)举例表明: 
      grep ^[^210] myfile 匹配myfile中以非二 、壹 、0开端的行 
      grep “[5-8][6-9][0-3]” myfile
匹配myfile中第3个人为5|6|7|8,第一位6|7|8|9,第肆人为0|1|2|3的两个字符的行 
      grep “4\{2,4\}” myfile 匹配myfile中含有44,444或4444的行 
      grep “\?” myfile匹配myfile中带有任意字符的行 
  (3)grep命令类名 
      [[:upper:]]   表示[A-Z] 
      [[:alnum:]]   表示[0-9a-zA-Z] 
      [[:lower:]]   表示[a-z] 
      [[:space:]]   代表空格或许tab键 
      [[:digit:]]   表示[0-9] 
      [[:alpha:]]   表示[a-zA-Z] 
    如:grep “5[[:digit:]][[:digit:]]” myfile
匹配myfile中涵盖5始发接下去两位都以数字的行。 
4.awk介绍 
可以从文件或字符串中基于钦定规则浏览和抽取新闻,是一种自解释的成为语言。 
(1)awk命令行方式 awk [-F filed-spearator] ‘command’ input-files 
    awk脚本:全体awk命令插入3个文书,并使awk程序可实施,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。awk脚本是由种种操作和格局组成。 
    方式部分决定动作语句哪天触发及触发事件。(BEGIN,END) 
    动作对数码开始展览处理,放在{}内指明(print) 
(2)分隔符、域和记录 
    awk执行时,其浏览域标记为$1,$2,…$n.那种办法成为域标识。$0为全数域。 
(3)举例表达: 
      awk ‘{print $0}’ test.txt |tee test.out
输出test.txt中装有行$0表示全体域 
      awk -F : ‘{print $1} test.txt |tee
test.out’   同上。。只是分隔符为”:” 
      awk ‘BEGIN {print “IPDate\n”}{print $1 “\t” $4} END{print
“end-of-report”}’ test.txt 
      开首时打字与印刷“IPDate”甘休时打印“end-of-report”中间打字与印刷主体音讯,比如总共匹配三条音讯,则输出如下:   
IPDate 
1 first 
2 second 
3 third 
end-of-report 
  (4)匹配操作符 ~ 匹配,!~ 不匹配 
      cat test.txt |awk ‘$0~/210.34.0.13/’
匹配test.txt中为210.34.0.13的行 
      awk ‘$0!~/210.34.0.13’
test.txt     匹配test.txt中不是210.34.0.13的行 
      awk ‘{if($1==”210.34.0.13″) print $0}’ test.txt 匹配
test.txt中率先个域为210.34.0.13的行。
5.sed介绍
    sed不与起初化文件打交道,它操作的只是三个拷贝,然后全部的转移假诺没有重定向到2个文书,将出口到荧屏。 
    sed是一种很重庆大学的文本过滤工具,使用一行命令可能接纳管道与grep与awk相结合。是一种非交互性文本流编辑。 
    (1)调用sed的三种方式 
      使用sed命令行格式为:sed [options] sed命令 输入文件 
      使用sed脚本文件格式为:sed[options] -f sed脚本文件 输入文件 
      sed脚本文件[options] 输入文件 
      –不管是行使shell命令行情势或脚本文件格局,如若没有点名输入文件,sed从规范输入中承受输入,一般是键盘或重定向结果。 
    (2)sed 命令的options如下 
        -n:不打印 
        -c:下一命令是编辑命令 
        -f:假使正在调用sed脚本文件 
    (3)sed在文书中询问文本的方法 
          –使用行号,能够是贰个粗略的数字,或是八个行号的限制 
          –使用正则表明式 
    (4)读取文本的艺术 
          x       x为一行号 
          x,y       表示行号范围从x到y 
          /pattern/     查询包罗情势的行 
          /pattern/pattern/ 查询包括多少个方式的行 
          pattern/,x   在加以的行号上询问包罗方式的行 
          x,/pattern/   通过行号和情势查询匹配行 
          x,y!       查询不含有钦赐行号x和y的行 
      (5)基本sed编辑命令 
            p   打印匹配行 
            d   删除匹配行 
            =   展现文件行号 
            a\   在固化行号后附加新文本音信 
            i\   在定位行号后插入新文本新闻 
            c\   用新文本替换定位文本 
            s     使用替换格局替换相应形式 
            r     从另八个文书中读文件 
            w   写文本到1个文书 
            q     第多个形式匹配完毕后生产或立即退出 
            l     展现与八禁止ASCII代码等价的主宰字符 
            {}   在一定行执行的吩咐组 
            n     从另贰个文书中读文件下一行,并附加在下一行 
            g     将模式2粘贴到/pattern n/ 
            y     传送字符 
    (6)举例表明: 
          sed -n ‘2p’ test.txt
打字与印刷第贰行的新闻(注意:-n是不打字与印刷不合营的消息,若没加-n,则打字与印刷文件的兼具信息而不是匹配信息) 
          sed -n ‘1,4p’ test.txt 打字与印刷第壹行到第④行的消息 
          sed -n ‘/los/p’ test.txt格局匹配los,并打字与印刷出来 
          sed -n ‘2,/los/p’ test.txt
从第三行起头。。知道匹配第四个los 
          sed -n ‘/^$/p’ test.txt 匹配空行 
          sed -n -e ‘/^$/p’ -e ‘/^$/=’ test.txt 打字与印刷空行及行号 
          sed -n ‘/good/a\morning’ test.txt
在很是到的good前边附加morning 
          sed -n ‘/good/i\morning’ test.txt
在同盟到的good前边插入morning 
          sed -n ‘/good/c\morning’ test.txt
将同盟到的good替换来morning 
          sed ‘1,2d’ test.txt 删除第1和2行 
          sed ‘s/good/good morning/g’ test.txt
匹配good并替换来goodmorning 
          send ‘s/good/& hello /p’ test.txt
匹配到good就在其前面加上hello 
          send ‘s/good/ hello &/p’ test.txt
匹配到good就在其前边加上hello 
6.联合与分割(sort,uniq,join,cut,paste,split)     (1)sot命令 
        sort [options] files 许多分化的域按差异的列顺序排序 
          -c 测试文件是不是曾经排序 
          -m 合并五个排序文件 
          -u 删除全部同一行 
          -o 存款和储蓄sort结果的输出文件名 
          -t 域分隔符,用非空格或tab开端排序 
          +n :n 为列号,使用此列号早先排序 
          -n 钦赐排序是域上的数字分类项 
          -r 比较求逆 
        sort -c test.txt 测试文件是还是不是分类过 
        sort -u test.txt 排序并统一一样的行 
        sort -r test.txt 以相反的顺序排列 
        sort -t “/” +2 test.txt 以”/”分隔,第一个域起头分类 
      (2)uniq命令 
          uniq [options ] files 从三个文本文件中删除或取缔重复行 
          -u 只展现不重复行 
          -d 只突显有再一次数据行,各样重复行只显示中间一行 
          -c 打字与印刷每一重复行出现次数 
          -f :n为数字,前n个域被忽略 
          uniq -f 2 test.txt 忽略前2个域 
      (3)join 命令 
          join [options] file1 file2
用来今后自五个分类文本文件的行连在一道 
          -an,n为一数字,用于连接时从文件n中展现不匹配行 
          -onm ,连接域,n为文件号,m为域号 
          -jnm,n为文件号,m为域号,使用别的域作连接域 
          -t ,域分隔符。用来安装非空格或tab键的域分隔符。 
        (4)split命令 
          split -output_file_size intput_filename output_filename 
          用来将大文件分割成小文件。 
            -b n,种种分割文件的轻重缓急n 
            -C n,每种分割文件一行最多n字节 
            -l n,每一个分割文件的行数 
            -n,同-l n 
            split -10 test.txt 将test.txt分割成10行的小文件 
        (5)cut 命令 
          cut -c n1-n2 filename 展现每行从起头算起 n1 到 n2 的文字。 

centos下搜寻目录下文件中是还是不是带有钦赐字符串

find. |xargsgrep-ri “IBM”
摸索目录下的持有文件中是不是带有有些字符串,并且只打印出文件名
find. |xargsgrep-ril “IBM”
1.正则表达式
(1)正则表达式一般用来讲述文本方式的非正规用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。
(2)基本元字符集及其含义
^ :只匹配行首。 如^a 匹配以a开端的行abc,a2e,a12,aaa,……
$ :只匹配行尾。 如^a 匹配以a结尾的行bca,12a,aaa,…….
* :匹配0个或五个此单字符。 如(a)* 匹配 空,a,aa,aaa,….
[]
:只匹配[]内字符。可以是一个单字符,也能够是字符系列,用”,”将里面要合营的不比字符串分开。也得以选取-来表示[]内字符体系的限制,如[1-5]表示[12345]
\ :只用来遮掩贰个元字符的特别意义。 如\*,\’,\”,\|,\+,\^,\.

.:(点)只十三分任意单字符。
pattern\{n\}:只用来同盟后边pattern出现的次数.n为次数。如a\{2\}匹配aa.
pattern\{n,\}:含义同上,但次数最少为n.如a\{2,\}匹配aa,aaa,aaaa,…..
pattern\{n,m\}:含义同上,但次数在n和m之间。如a\{2,4\}匹配aa,aaa,aaaa三个
(3)举例表达:
^$ :匹配空行
^.$ :匹配包括二个字符的行
\*\.pas :匹配以*.pas结尾的持有字符或文件
[0123456789]或[0-9] :假定要协作任意二个数字
[a-z] :任意小写字母
[A-Za-z] :任意大小写字母
[S,s] :匹配大小写S
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}
:匹配IP地址 [0-9]\{3\}多少个0-9整合的字符串;\.
:匹配点(注意这里点是超过常规规的字符,所以要用”\”来屏蔽其意义)
2.find介绍
(1)查找具有有个别特点文件的下令,可遍历当前目录甚至于整个文件系统来查阅某个文件或目录,其遍历大的文件系统时一般位于后台执行。
(2)find命令的貌似情势
find pathname -options [-print -exec -ok]
-pathname
:find命令所查找的目录路径。如用”.”来表示最近的目录,用/来代表系统根目录
-print :find命令将同盟的文书输出到标准输出
-exec:
find命令对男才女貌的文书实施该参数所付出的shell命令,相应的通令格局为
‘command'{} \; (注意{}和\里面包车型客车空格)
-ok 和
-exec的效应一样,只可是以一种特别安全的方式来执行该参数所付出的shell命令,在推行每二个限令此前,都会交到提醒,让用户来分明是或不是举行。
options有如下二种:
-name :根据文件名查找文件
-perm :遵照文件权限来查找文件
-user :依照文件属主来查找文件
-group :依照文件所属的组来查找文件
-mtime -n +n
依据文件的转移时间来查找文件,-n代表文件更改时间距今后n天以内,+n表示文件更改时间距未来n天从前。find命令还有-atime
和-ctime选项,但它们都和-mtime选项相似。
-size n[c]查找文件长度为n块的公文,带有c时表示文件长度以字节计。
-nogroup 查找无有效所属组的公文,即该公文所属的组在/etc/groups中不存在
-newer file1 !file2查找更改时间比文件file1新但比文件file2旧的公文
-depth 先查找内定目录有无匹配文件,若无则再在子目录中追寻
-type 查找某一类别的文书,如
b :块设备文件
d:目录
e:字符设备文件
p;管道文件
l:符号链接文件
f:普通文书
(3)find命令举例
find -name “*.txt” -print 查找txt结尾的文书并出口到显示屏上
find /cmd “.sh” -print 查找/cmd目录下拥有sh文件,并出口
find . -perm 755 -print 查找当前目录下放权力限为755的公文,并出口
find `pwd` -user root -print 查找当前目录下属主为root的文本,并出口
find ./ -group sunwill -print 查找当前目录下所属主是sunwill的文件
find /var -mtime -5 -print 查找/var目录下转移时间为5天内的具有文件
find /var -mtime +5 -print 查找/var目录下改变时间为5天从前的持有文件
find /var -newer “myfile1” ! -newer “myfile2” -print
查找/var目录下比myfile1新,不过比myfile2旧的装有文件。
find /var -type d -print 查找/var目录下全体目录
find /var -type l -print 查找/var目录下有所的号子链接文件。
find . -size +1000000c -print 查找当前目录下超越一千000字节的公文
find / -name “con.file” -depth -print
查找根目录下有无”con.file”,若无则在其子目录中搜索
find . -type f -exec ls -l {} \;
查找当前目录下是或不是有一般文书,若有则履行ls -l
(4)xargs命令

使用find命令的-exec选项处理匹配到的文件时,find命令将有着匹配到的文书一起传递给exec。不幸的是,有个别系统对能够传递给exec的命
令长度有限定,那样find命令运行几分钟今后正是出现溢出错误。错误新闻日常是“参数列太长”或“参数列溢出”。这正是xargs的用处所在,尤其是与
find命令一道使用,exec会发起五个经过,而xargs会八个,只有五个
find ./ -perm -7 -print | xargs chmod o-w
查找权限为7的文件并传递给chmod处理
3.grep介绍 (1)grep 的一般格式为 grep [options] 基本正则表明式
[文件]
字符串参数最棒应用是双引号括,一是防备被误解为shell命令,二是足以用来寻找多少个单词组成的字符串
-c:只输出匹配行的记数
-i:不区分轻重缓急写(只适用于单个字符)
-h:查询多个文本时不展现文件名
-H:只展现文件名
-l:查询多文本时只输出包涵匹配字符的文本名
-n:只显示匹配行及其行号
-s:不显得不存在或无匹配文本的错误音信。
-v:呈现不带有匹配文本的保有行。
(2)举例表达:
grep ^[^210] myfile 匹配myfile中以非② 、① 、0开端的行
grep “[5-8][6-9][0-3]” myfile
匹配myfile中第二位为5|6|7|8,第4位6|7|8|9,第3位为0|1|2|3的七个字符的行
grep “4\{2,4\}” myfile 匹配myfile中含有44,444或4444的行
grep “\?” myfile匹配myfile中包涵任意字符的行
(3)grep命令类名
[[:upper:]] 表示[A-Z]
[[:alnum:]] 表示[0-9a-zA-Z]
[[:lower:]] 表示[a-z]
[[:space:]] 表示空格只怕tab键
[[:digit:]] 表示[0-9]
[[:alpha:]] 表示[a-zA-Z]
如:grep “5[[:digit:]][[:digit:]]” myfile
匹配myfile中含有5始发接下去两位都以数字的行。
4.awk介绍
能够从文件或字符串中基于钦点规则浏览和抽取消息,是一种自解释的变成语言。
(1)awk命令行方式 awk [-F filed-spearator] ‘command’ input-files
awk脚本:全数awk命令插入1个文件,并使awk程序可进行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。awk脚本是由各类操作和形式组成。
形式部分决定动作语句哪一天触发及触发事件。(BEGIN,END)
动作对数据开始展览处理,放在{}内指明(print)
(2)分隔符、域和记录
awk执行时,其浏览域标记为$1,$2,…$n.那种格局成为域标识。$0为全部域。
(3)举例表明:
awk ‘{print $0}’ test.txt |tee test.out
输出test.txt中全部行$0表示全数域
awk -F : ‘{print $1} test.txt |tee test.out’ 同上。。只是分隔符为”:”
awk ‘BEGIN {print “IPDate\n”}{print $1 “\t” $4} END{print
“end-of-report”}’ test.txt
起首时打字与印刷“IPDate”甘休时打字与印刷“end-of-report”中间打字与印刷主体音讯,比如总共匹配三条新闻,则输出如下:
IPDate
1 first
2 second
3 third
end-of-report
(4)匹配操作符 ~ 匹配,!~ 不匹配
cat test.txt |awk ‘$0~/210.34.0.13/’ 匹配test.txt中为210.34.0.13的行
awk ‘$0!~/210.34.0.13’ test.txt 匹配test.txt中不是210.34.0.13的行
awk ‘{if($1==”210.34.0.13″) print $0}’ test.txt 匹配
test.txt中率先个域为210.34.0.13的行。
5.sed介绍
sed不与初叶化文件打交道,它操作的只是二个拷贝,然后全体的转移要是没有重定向到二个文书,将出口到显示器。
sed是一种很重庆大学的文本过滤工具,使用一行命令大概采取管道与grep与awk相结合。是一种非交互性文本流编辑。
(1)调用sed的三种艺术
使用sed命令行格式为:sed [options] sed命令 输入文件
选拔sed脚本文件格式为:sed[options] -f sed脚本文件 输入文件
sed脚本文件[options] 输入文件
–不管是应用shell命令行格局或脚本文件情势,即使没有点名输入文件,sed从规范输入中收受输入,一般是键盘或重定向结果。
(2)sed 命令的options如下
-n:不打印
-c:下一下令是编辑命令
-f:假诺正在调用sed脚本文件
(3)sed在文件中询问文本的法门
–使用行号,能够是一个简练的数字,或是三个行号的范围
–使用正则表达式
(4)读取文本的法子
x x为一行号
x,y 代表行号范围从x到y
/pattern/ 查询包罗形式的行
/pattern/pattern/ 查询包涵八个形式的行
pattern/,x 在加以的行号上查询包蕴形式的行
x,/pattern/ 通过行号和形式查询匹配行
x,y! 查询不分包钦点行号x和y的行
(5)基本sed编辑命令
p 打字与印刷匹配行
d 删除匹配行
= 展现文件行号
a\ 在一直行号后附加新文本消息
i\ 在定点行号后插入新文本新闻
c\ 用新文本替换定位文本
s 使用替换情势替换相应方式
r 从另一个文书中读文件
w 写文本到1个文书
q 第①个格局匹配完成后生产或立时退出
l 彰显与八禁止ASCII代码等价的控制字符
{} 在固化行执行的命令组
n 从另1个文书中读文件下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
(6)举例表达:
sed -n ‘2p’ test.txt
打字与印刷第2行的音讯(注意:-n是不打字与印刷不包容的音信,若没加-n,则打字与印刷文件的享有音信而不是协作音讯)
sed -n ‘1,4p’ test.txt 打字与印刷第①行到第五行的音信
sed -n ‘/los/p’ test.txt形式匹配los,并打字与印刷出来
sed -n ‘2,/los/p’ test.txt 从第壹行开端。。知道匹配第③个los
sed -n ‘/^$/p’ test.txt 匹配空行
sed -n -e ‘/^$/p’ -e ‘/^$/=’ test.txt 打字与印刷空行及行号
sed -n ‘/good/a\morning’ test.txt 在合作到的good后边附加morning
sed -n ‘/good/i\morning’ test.txt 在同盟到的good前边插入morning
sed -n ‘/good/c\morning’ test.txt 将匹配到的good替换来morning
sed ‘1,2d’ test.txt 删除第1和2行
sed ‘s/good/good morning/g’ test.txt 匹配good并替换来goodmorning
send ‘s/good/& hello /p’ test.txt 匹配到good就在其后边加上hello
send ‘s/good/ hello &/p’ test.txt 匹配到good就在其前方加上hello
6.合并与分割(sort,uniq,join,cut,paste,split) (1)sot命令
sort [options] files 许多差别的域按不一样的列顺序排序
-c 测试文件是还是不是业已排序
-m 合并多少个排序文件
-u 删除全体同一行
-o 存款和储蓄sort结果的出口文件名
-t 域分隔符,用非空格或tab伊始排序
+n :n 为列号,使用此列号开始排序
-n 内定排序是域上的数字分类项
-r 比较求逆
sort -c test.txt 测试文件是还是不是分类过
sort -u test.txt 排序并统一一样的行
sort -r test.txt 以相反的顺序排列
sort -t “/” +2 test.txt 以”/”分隔,第1个域发轫分类
(2)uniq命令
uniq [options ] files 从三个文书文件中去除或取缔重复行
-u 只展示不重复行
-d 只彰显有重新数据行,各个重复行只彰显中间一行
-c 打字与印刷每一重复行出现次数
-f :n为数字,前n个域被忽略
uniq -f 2 test.txt 忽略前2个域
(3)join 命令
join [options] file1 file2 用来未来自四个分类文本文件的行连在共同
-an,n为一数字,用于连接时从文件n中展现不匹配行
-onm ,连接域,n为文件号,m为域号
-jnm,n为文件号,m为域号,使用其余域作连接域
-t ,域分隔符。用来安装非空格或tab键的域分隔符。
(4)split命令
split -output_file_size intput_filename output_filename
用来将大文件分割成小文件。
-b n,每种分割文件的大小n
-C n,种种分割文件一行最多n字节
-l n,每种分割文件的行数
-n,同-l n
split -10 test.txt 将test.txt分割成10行的小文件
(5)cut 命令
cut -c n1-n2 filename 显示每行从起头算起 n1 到 n2 的文字。
cut -c 3-5 test.txt 彰显test.txt中每行从第②到第多少个字符**

find.
|xargsgrep-ri IBM
查找目录下的全数文件中是不是包括有个别字符串,并且只打字与印刷出文件名
find….

awk 选项 ‘情势大概命令{编辑指令}’ 文件名 awk ‘//{print}’
awk -f 脚本文件 文件名

其三章 查找与替换

回顾:本章商讨的是编写制定Shell脚本时平日选取的多个基本操作:文本查找、文本替换。

          cut -c 3-5 test.txt 突显test.txt中每行从第1到第四个字符

 

3.1  查找文本

如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序。POSIX选择两种分化grep变体:grep、egrep、fgrep整合为单个版本,通过不一致的选项,分别提供那三种行为格局。
who | grep -F root
地方运用-F选项,以寻找固定字符串root。事实上,只要匹配的形式里未包蕴正则表明式的meta字符,则grep暗中认可行为情势就同一使用了-F。

find
.|xargs grep -ri “IBM”
查找目录下的全数文件中是还是不是含有某些字符串,并且只打字与印刷出文件名 fi…

元字符 :

3.2  正则表明式

POSIX的正则表明式有三种,基本正则表达式(BRE)以及扩张正则表明式(ERE)。
sed是拍卖大致字符串替换的显要工具。
在一些程序语言里,单个字符串大概含有数行,那种情景下,^与$指的分级是字符串的始发与终极。
正则表明式匹配范例:
表达式 匹配
tolstoy 位于一行上任何职责的八个字母:tolstoy
^tolstoy 七个字母tolstoy,出今后一行的启幕
tolstoy$ 多少个字母tolstoy,现身在一行的最后
^tolstoy$ 正好包含tolstoy那四个字母的一行,没有其他的任何字符
[Tt]olstoy 在一行上的自由位居中,含有Tolstoy或是tolstoy
tol.toy
在一行上的人身自由位居中,含有tol那贰个假名,加上其余3个字符,再接着toy那四个假名
tol.*toy
在一行上的随意位居中,含有tol那1个字母,加上自由的0或八个字符,再持续toy那两个字母

区间表明式匹配规则:
\{n\} 前置正则表明式所得结果重现n次
\{n,\} 前置正则表明式所得结果再一次现身至少n次
\{n,m\} 前置正则表明式所得结果重现n至m次

在s命令里以g结尾表示的是,全局性。如:
$ echo Tolstoy reads well. Tolstoy writes well. >example.txt
输入样本
$ sed ‘s/Tolstoy/Camus/’ < example.txt 没有设置g
Camus reads well. Tolstoy writes well.
$ sed ‘s/Tolstoy/Camus/g'< example.txt 设置了’g’
Camus reads well. Camus writes well.
$sed ‘s/Tolstoy/Camus/2’ < example.txt 仅代表第一个匹配者
Tolstoy reads well.Camus writes well.

sed -n ‘10,42p’ foo.xml 仅打印10-42行

\ 转义
^ 以….开头
$ 以….结尾
. 任意符
* 匹配子表明式0次或频仍
[list] 匹配列表里的2个字符 eg: go[ola]d 也只是匹配当中2个字符
[^list] 匹配任意七个不在列表里的贰个字符
\{n,m\} 匹配前面的子表明式最小n到最大m次

3.3  字段处理

cut命令用以剪下选定的字符范围或字段,join则是用来组合记录中具备协同键值的字段的文书。
awk多半用于不难的“命令行程序”,当想要只展现选定的字段,或是重新安顿行内的字段顺序时,正是awk派上用场的时候了。

awk ‘{ print $1}’ file 打字与印刷第一个字段
awk ‘{ print $2,$5}’ file 打印第2与第5个字段
awk ‘{ print $1,$NF}’ file 打字与印刷第②个与最后三个字段
awk ‘NF>0 {print $0}’ file 打字与印刷非空行
awk ‘NF>0’ file 同上

壮大元字符:

第⑤章 文本处理工科具

摘要:本章总共介绍了约30种处理公事文件的好用工具。它们都以法力很强的工具组,可用来编排Shell脚本。

+ 匹配前面子表明式一次上述
? 匹配前面子表明式0次照旧叁遍
() 将括号中的字符串看成一个完整
| 以 或 的主意万分

4.1  排序文本

sort -t: -k1,1 file 以冒号隔绝的率先个字段进展排序
sort -t: -k2nr,2 file
从字段2伊始处开头,以数值类型反向排序并甘休于字段3的末尾
sort -t: -k2n -k3n file 先以第壹列排序,在以第①列排序
sort -t: -k2n -u file 输出键值字段匹配的唯一记录

awk 内置变量:
FS 内定每行文本中的分隔开,不写分隔符暗许空格
NF 处理当下文件的列数
NENCORE 处理当下文件的行数
$0 处理当下行的整行内容
$n 处理当下的第n个字段

4.2  删除重复

sort file |uniq 显示唯一的排序后的记录
sort file |uniq -c 计数唯一的排序后的记录
sort file |uniq -d 仅彰显重复的记录
sort file |uniq -u 仅显示未再一次的记录

sort 排序命令
sort -r 反向排序
sort -n 以数值的尺寸排序,从大到小
uniq 去除重复项
uniq -c 在每行加上编号

4.3  重新格式化段落

fmt -s -w 10 file               长度当先10的行格式化为短的行

供销合作社实例:

4.4  计算行数、字数以及字符数

echo hello wrold |wc 总结行数、字数、字节数
echo hello world |wc -c 计算字节数
echo hello world |wc -l 总结行数
echo hello world |wc -w 总计字数
wc file1 file2 总计多个文件里的数额

应用awk 一条命令:提取IP并且编辑IP生成主机名,并且把IP中的 . 替换成
–   (生成的格式:用户名-IP-地址)

4.5  打印

hostname `ifconfig | grep “inet addr:” | awk -F: ‘NR==1 {print
$2}’|awk -F” ” ‘{print $1}’|awk -F. ‘{print
“Dfs-“$1”-“$2”-“$3”-“$4″-BJ”}’`

4.6  提取开端或最后数行

head -n file 输出文件的前n行
tail -n file 输出文件的后n行

相关文章