linux笔记三:grep和sed的用法

grep [option] Pattern [FILE...]

      -i:忽略大小写

      --colour:用高亮的颜色显示

      -v:显示没有被匹配到的行

      -o:只显示被匹配到的字符串

      -E:使用扩展正则表达式

      -A #:包括后来多少行

      -B #:包括前面多少行

      -C #:包括前后多少行

 

扩展正则表达式:


字符匹配:

.

[] 如:a-z,A-Z

[^]


次数匹配:

*:其前字符任意次

?:匹配其前面的字符1次或0次

+:匹配其前面的字符至少一次

{m,n}:


位置锚定:

^:锚定行首,此字符后面的任意内容必须出现在行首

$:锚定行尾,此字符后面的任意内容必须出现在行首

^$:空白行


\<或者\b:锚定词首,其后面的任意字符必须作为单词的首部出现

\>或者\b:锚定词尾,其前面的任意字符必须作为单词的前部出现


sed基本用法;

sed:行编辑器


sed ‘AddressCommand’ file....

    -n:静默模式,不在默认显示模式空间内的内容

    -i:直接修改原文件

    -e SCRIPT -e SCRIPT:可同时执行多个脚本

    -f /PATH/TO/SED_SCRIPT:

    -r:表示使用扩展正则表达式

   

command:

      d

      p

      a \string

      i \string

      r filename

      w filename

      s/pattern/string/修饰符:

      g:全局替换

      i:查找时忽略大小写


sed练习:

1、删除/etc/grub.conf文件中行首的空白符;

sed -r ‘s@^[[:space:]]+@@g‘ /etc/grub.conf 

2、替换/etc/inittab文件中“id:3:initdefault:"一行中的数字为5;

sed ‘s@\(id:\)[0-9]\(:initdefault:\)@\15\2@g‘ /etc/inittab 

3、删除/etc/inittab文件中的空白行;

sed ‘/^$/d‘ /etc/inittab

4、删除/etc/inittab文件中开头的#号;

sed ‘s/^#//g‘ /etc/inittab

5、删除某文件中开头的#号,但要求#号后面必须有空白字符;

sed -r ‘s@^#[[:space:]]+@@g‘ /etc/inittab 

6、删除某文件中以空白字符后面跟#的护航中的开头的空白字符及#

sed -r ‘s@^[[:space:]]+#@@g‘ /etc/inittab 

7、取出一个文件路径的目录名称;

echo "/etc/rc.d" | sed -r ‘s@^(/.*/)[^/]+/?@\1@g‘


本文出自 “撒旦天天” 博客,请务必保留此出处http://satantiantian.blog.51cto.com/6159537/1569246

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。