`
tenderuser
  • 浏览: 59324 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

sed... 持续更新

阅读更多
sed 命令的基本形式为:
  
引用
sed [options] {sed-commands} {input-file}

sed 每次从input-file 读取一行,然后对这一行执行{sed-commands}。执行完后,继续读文件中的下一行,然后对第二行执行sed-commands命令,直到把文件完全读完,结束。

1、打印/etc/passwd 文件中的所有行:
引用
sed -n 'p' /etc/passwd


对于sed命令可以对每一行执行多个sed命令,也可以将sed命令放到sed脚本文件中。
1)将sed命令放到脚本文件中,
引用
sed [options] -f {sed-commands-in-a-file} {input-file}


eg:
  
引用
ledkk@ubuntu:~$ cat test-script.sed
/^root/ p
/^nobody/ p
ledkk@ubuntu:~$
ledkk@ubuntu:~$ sed -n -f test-script.sed /etc/passwd
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ledkk@ubuntu:~$

2)也可以将多个sed命令使用-e 参数链接起来:
eg:
引用
ledkk@ubuntu:~$ sed -n -e '/^root/ p' -e '/^nobody/ p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh


如果需要对每一行执行多个sed命令的时候,可以使用反斜杠将-e所指定的命令断行:
引用
ledkk@ubuntu:~$ sed -n -e '/^root/ p' \
> -e '/^nobody/ p' \
> /etc/passwd
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ledkk@ubuntu:~$

也可以通过使用大括号将多个命令括起来,也可以实现断行的效果:
引用
sed [options] '{
sed-command-1
sed-command-2
}' input-file


eg:
引用
ledkk@ubuntu:~$ sed -n '{
> /^root/ p
> /^nobody/ p
> }' /etc/passwd
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ledkk@ubuntu:~$


sed命令并不修改原文件,他只是简单的将输出打印到标准输出上。如果想保存sed命令所做的处理,可以使用文件重定向来处理:
引用
sed [options] sed-command input-file > filename.txt


2、sed脚本执行的顺序:
1)sed命令会从inputfile 中读取一行文本到 【临时空间】 中去,【临时空间】是一个用来存放从输入文件中读取的行的临时空间。
2)sed将会对【临时空间】中的这一行文本执行sed-command,如果有多个sed-command,将会对【临时空间】中的文本一个接着一个的执行。
3)打印被sed-command处理过的文本行,然后清空【临时空间】中的文本行。
4)重新从input-file中取出下一行,接着步骤1执行,知道到了文件的结束。

3、(p 命令)使用sed 命令 【p】 可以用来打印【临时空间】中的文本行。
sed默认在执行完sed-command命令后,会自动打印【临时空间】中的文本,然而通过【p】命令,可以控制打印的内容。一般来说当是用【p】命令时,需要使用-n 参数挂起sed默认的打印操作,否则将会重复打印【临时空间】中的内容,如下所示:
eg:
引用
ledkk@ubuntu:~$ sed 'p' employee.txt
101,John Doe,CEO
101,John Doe,CEO
102,Jason Smith,IT Manager
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
105,Jane Miller,Sales Manager

一般来说,在sed-command命令之前不加地址范围的话,sed-command将会作用到input-file中的每一行上,如果在sed-command命令之前加上地址范围后,可以限制sed-command只作用于指定的行上:
eg:
1) 只打印第二行
引用
ledkk@ubuntu:~$ sed -n '2 p' employee.txt
102,Jason Smith,IT Manager

2) 打印input-file中的1到4行:
引用
ledkk@ubuntu:~$ sed -n '1,4 p' employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer

3)打印inputfile中的1到最后一行:($ 代表input-file中的最后一行)
引用
ledkk@ubuntu:~$ sed -n '1,$ p' employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

我们可以使用【,+ ~】来设置命令的地址范围:
【,】号一般表示一个范围: 【1,2】表示第1、2行
【+ 】号一般和,一起使用:【1,+2】表示从第1行开始,到1+2行结束。
【~】号用来表示略过的行数:
1~2 表示1,3,5,7,9.......
2~2  表示2,4,6,8,10.......
1~3  表示1,4,7,10.....

eg:
只打印奇数行:
引用
ledkk@ubuntu:~$ sed -n '1~2 p' employee.txt
101,John Doe,CEO
103,Raj Reddy,Sysadmin
105,Jane Miller,Sales Manager
ledkk@ubuntu:~$

和使用地址范围来限制sed-command作用的行外,还可以使用正则表达式来限制sed-command作用的行:
eg:
引用
ledkk@ubuntu:~$ sed -n '/Jane/ p' employee.txt
105,Jane Miller,Sales Manager
ledkk@ubuntu:~$


打印从第一个匹配Jane的行开始的4行文本:(如果没有匹配时,将会什么也不打印)
引用
ledkk@ubuntu:~$ sed -n '/Jason/ ,4 p' employee.txt
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer



分享到:
评论

相关推荐

    windows-64位sed.exe

    zip包中有dll,windows64位,实测可用。解压后,在文件下打开命令窗口,直接使用sed.对于win64位,把dll放在C:\Windows\SysWOW64,sed.exe放在C:\Windows\System32,就可以直接打开cmd使用了

    sed.exe win x32 x64

    sed.exe win x32 x64 使用方法:解压后根据系统选择自己对应的sed.exe 复制到 C:\Windows\System32 或者C:\Windows\System64 下面即可

    sed.exe.rar

    sed.exe.rar 据说反向代理后的可以替换内容

    sed.exe 文件

    反向代理强制替换删除内容,适用windows64和32位操作系统

    windows10x64 sed使用工具

    1、亲测完美兼容64 2、使用简单 3、示例:"C:\Program Files (x86)\GnuWin32\bin\sed.exe" -i s/"hello world"/"how old are you"/g .\test\a.txt

    sed安装文件(dll拷到CWindowsSysWOW64,sed.exe拷到CWindowsSystem32).rar

    sed功能非常强大,更方便对程序的执行,实现更多无法实现的功能。

    sed.exe 64位

    sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在...

    linux下sed命令在windows上的移植版本工具sed.exe

    linux下的sed命令处理字符串很方便,这是一个在windows上可以使用的版本,下载之后就可以在windows上使用sed命令了。

    A3977sed.zip

    CNC A3977sed 驱动 pcb..........

    Linux教程-linux文本处理-sed.docx

    Linux教程-linux文本处理-sed.docx

    sed.exe.zip

    sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在...

    Jonsen sed.awk.android.contentservice

    mini doc about sed, awk and android

    ASPAC-SED.rar_sed

    SED是UNIX环境下常用的工具之一.本文讲解如何使用SED进行文本处理与操作.

    sed.sf.net:sed.sf.net网站的内容

    sed.sf.net网站 自2002年以来, 是sed信息和社区脚本的主要门户。 由创建和维护。 请贡献添加链接,修复断开的链接和更新信息。 您可以通过或什至更好的方法来提交拉票请求。 书呆子 该站点的主页是有效的sed脚本...

    Linux-02sed.ppt

    什么是sed:主要介绍什么是sed工具,sed工具的主要操作、工作方式以及地址表示方法,在sed命令中使用正则表达式等。 sed命令的常用操作:主要介绍sed命令的注释方法,打印文本,替换文本,删除文本,追加文本,插入...

    三剑客-sed.txt

    sed基础使用

    1335SED.rar_源码

    我在使用的一个1335SED液晶屏程序.

    Linux的cut .awk .sed.docx

    对linux的散打剑客:cut/awk/sed的详细介绍

    sed-4.2.1.rar包括sed-4.2.1-setup.exe、sed-4.2.1-dep.zip、sed-4.2.1-bin.zip

    包括sed-4.2.1-setup.exe、sed-4.2.1-dep.zip、sed-4.2.1-bin.zip

    4.sed工具.doc

    4.sed工具.doc

Global site tag (gtag.js) - Google Analytics