商务合作加Q:411239339

sed和awk的101个技巧

浏览:247次阅读
没有评论

共计 1341 个字符,预计需要花费 4 分钟才能阅读完成。

一、Sed的语法和基本命令

    1、sed [options] {sed-commands}
{input-file} 

         如:sed -n
'p' /etc/passwd 

    2、使用 sed 命令文件的基本语法

        sed
[options] -f {sed-commands-in-a-file} {input-file} 

        $ vi
test-script.sed

        /^root/ p

        /^nobody/

        $ sed -n -f
test-script.sed /etc/passwd 

        执行结果:

        sed 和 awk 的 101 个技巧

     3、当需要执行多个命令时,你可以使用 -e, 如下面的格式:

        sed [options] -e
{sed-command-1} -e {sed-command-2} {input-file} 

       
以下例子是打印 /etc/passwd 中以 root 和 nobody 开头的行

        $sed -n -e '/^root/
p'-e'/^nobody/ p' /etc/passwd 

        执行结果与上例中使用 sed 文件一致。

       
此外,如果你需要执行大量的命令,可以使用反斜杠,如:

        sed -n \

        -e '/^root/
p' \

        -e
'/^nobody/ p' \

        /etc/passwd 

       
也可以使用{}来将这些命令组合起来,如:

sed [options] '{
sed-command-1
sed-command-2
}'  input-file 

例子:

sed -n '{/^root/ p ;/^nobody/ p}' /etc/passwd

注意:sed 不会修改源文件的内容,它只会把输出结果打印到标准输出流,如果你想要保存这个结果,你可以使用重定向的方式,如:>filename.txt

二、sed 的工作流程

sed 的工作流程分为以下几步:

1、从模式空间中读入(一个交互的临时空间,它可以是从文件中读入的)

2、在模式空间中执行 sed 的命令。如果在 [command] 部分有多于一个的命令,可以通过一个 sed 文件(上面已经提到过这个文件),- e 选项或者{
},sed 会将模式空间中的内容按照 [command] 中的命令顺序来执行。

3、打印模式空间中的内容。一旦打印完这一行,那么模式空间中这一行的内容将会被置空。

4、不断的重复上面三步,直到读到文件的末尾。

sed 和 awk 的 101 个技巧

三、打印模式空间(p)

   
     使用 p 命令,你可以打印当前模式空间中的内容。
四、强大的 &, 获取模式空间值
    如:sed 's/^[0-9][0-9][0-9]/[&]/g'
employee.txt
    执行结果:
    sed 和 awk 的 101 个技巧
    正则表达式实例:
    sed 's/^.*/<&>/'
employee.txt 
    sed 和 awk 的 101 个技巧
    说明:以任意字符开关,任意多个字符结束的行,并将结果用 <> 括起来
五、替换组
    sed 's/\([^.]*\).*/\1/g'
employee.txt
    sed 和 awk 的 101 个技巧
    说明:
   (1)正则表达式 \([^.]*\)匹配第一个逗号之前的字符串
    (2)\1 表示要替换的正则匹配组中的字符串
   (3)g 是全局标志符。
正文完
扫码赞助
post-qrcode
 0
果子
版权声明:本站原创文章,由 果子 于2013-09-14发表,共计1341字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。