找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 223|回复: 0

我的学习笔记之??sed和awk的101个技巧(一)

[复制链接]

205

主题

172

回帖

6921

积分

论坛元老

积分
6921
发表于 2013-10-10 16:16:00 | 显示全部楼层 |阅读模式
一、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/ p
        $ sed -n -f test-script.sed /etc/passwd         执行结果:
[attachment=1142]


     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
        也可以使用{}来将这些命令组合起来,如:
[blockquote]sed [options] '{
sed-command-1
sed-command-2
}'  input-file
例子:
sed -n '{/^root/ p ;/^nobody/ p}' /etc/passwd
注意:sed不会修改源文件的内容,它只会把输出结果打印到标准输出流,如果你想要保存这个结果,你可以使用重定向的方式,如:>filename.txt[/blockquote]二、sed的工作流程
[blockquote]sed的工作流程分为以下几步:1、从模式空间中读入(一个交互的临时空间,它可以是从文件中读入的)
2、在模式空间中执行sed的命令。如果在[command]部分有多于一个的命令,可以通过一个sed文件(上面已经提到过这个文件),-e选项或者{},sed会将模式空间中的内容按照[command]中的命令顺序来执行。3、打印模式空间中的内容。一旦打印完这一行,那么模式空间中这一行的内容将会被置空。
[/blockquote][blockquote]4、不断的重复上面三步,直到读到文件的末尾。[/blockquote][blockquote][attachment=1143][/blockquote][blockquote]
file:///C:/Users/Administrator/AppData/Local/Temp/Wiz/a93ffb8c-3521-426e-8d72-455b65dd9126_1_files/caddc512d015facbb39f5b668fdba4da.png
[/blockquote]三、打印模式空间(p)
        使用p命令,你可以打印当前模式空间中的内容。
四、强大的&,获取模式空间值
    如:sed 's/^[0-9][0-9][0-9]/[&]/g' employee.txt
    执行结果:
   [attachment=1144]

    正则表达式实例:
    sed &#39;s/^.*/<&>/&#39; employee.txt
    [attachment=1145]
    说明:以任意字符开关,任意多个字符结束的行,并将结果用<>括起来
五、替换组
    sed &#39;s/\([^.]*\).*/\1/g&#39; employee.txt
    [attachment=1146]
    说明:
    (1)正则表达式\([^.]*\)匹配第一个逗号之前的字符串
    (2)\1表示要替换的正则匹配组中的字符串
    (3)g是全局标志符。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 04:48 , Processed in 0.142960 second(s), 21 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表