`
wx1569466809
  • 浏览: 72136 次
文章分类
社区版块
存档分类
最新评论

sed工具(一)

 
阅读更多

9.4-9.5 sed命令

>sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed用法

>使用sed可以实现grep的大部分功能,而且还可以查找替换。

语法:
sed [options] 'command' filename
sed [options] -f scriptfile filename

Options:
-n:-n选项和p命令一起使用表示打印
-e:等价于--expression,多点编辑,在一行执行多条命令

eg:

  • 用sed实现匹配(grep)功能=打印有root字符串的行
[root@adai003 sed]# sed -n '/root/'p test.txt
root:x:0:0:roprot:/root:/bin/bash

[root@adai003 sed]# sed -nr '/o+t/'p test.txt  (当‘//’中间有特殊字符时需要脱义,使用脱义符‘\’或使用-r表示脱义,等同于egrep)
root:x:0:0:roprot:/root:/bin/bash
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c
pcp:x:996:994:Performance Co-Pilot:/var/lib/pcp:/sbin/nologin

忽略大小写(I)

[root@adai003 sed]# sed -n '/nologin/'Ip test.txt  忽略大小写
bin:x:1:1:bin:/bin:/sbin/Nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
……
  • 打印指定行(p)
[root@adai003 sed]# sed -n '2'p test.txt  打印第二行
bin:x:1:1:bin:/bin:/sbin/Nologin

[root@adai003 sed]# sed -n '2,4'p test.txt
bin:x:1:1:bin:/bin:/sbin/Nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Ctrl-Alt-Deoooleoooote ios handled by /usr/lib/systemd/system/c

[root@adai003 sed]# sed -n '7,$'p test.txt
pcp:x:996:994:Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target

打印所有内容:
[root@adai003 sed]# sed -n p test.txt 
(内容太多不做演示)
  • -e选项允许在同一行里执行多条命令:
[root@adai003 sed]# sed -e '1'p -e '/daemon/'p -n test.txt
root:x:0:0:roprot:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@adai003 sed]# sed -e '1'p -e '/root/'p -n test.txt
root:x:0:0:roprot:/root:/bin/bash
root:x:0:0:roprot:/root:/bin/bash

解析: “sed -e '1'p -e '/daemon/'p -n test.txt”该命令的意思是:打印第一行,同时也打印出匹配有‘daemon’的行。当打印的内容和匹配的内容相同时,会分别显示,即:两个命令同时进行但相对独立。

  • 删除指定行(d)
[root@adai003 sed]# sed '3,$'d test.txt
root:x:0:0:roprot:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/Nologin

注: 这种方法并不会删除文件的内容,知识打印在屏幕上的内容删除了指定行。那么如何直接删除文件中指定的内容呢?如下:

[root@adai003 sed]# wc -l test.txt
12 test.txt
[root@adai003 sed]# sed -i '3,$'d test.txt
[root@adai003 sed]# wc -l test.txt
2 test.txt

[root@adai003 sed]# cat test.txt
root:x:0:0:roprot:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/Nologin

[root@adai003 sed]# sed -i '/root/'d test.txt
[root@adai003 sed]# cat !$
cat test.txt
bin:x:1:1:bin:/bin:/sbin/Nologin
  • 查找替换(s) 类似于vim中的查找替换
[root@adai003 sed]# sed '1,3s/root/ROOT/g' test.txt |head -3
ROOT:x:0:0:roprot:/ROOT:/bin/bash
bin:x:1:1:bin:/bin:/sbin/Nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
注:此处如果不使用head命令,将会显示test.txt全部内容。

替换每行第一个字符串和最后一个字符串的位置:

替换前:
[root@adai003 sed]# head -3 test.txt 
root:x:0:0:roprot:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/Nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
替换后:
[root@adai003 sed]# head -3 test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
/bin/bash:x:0:0:roprot:/root:root
/sbin/Nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon

说明: 小括号内的字符串可以用反斜杠跟数字组合按顺序来代替。

删除内容(替换为空即可)

[root@adai003 sed]# head -3 test.txt |sed -r 's@[a-zA-Z]@@g'
::0:0::/://
::1:1::/://
::2:2::/://

在每一行行首添加指定字符:

[root@adai003 sed]# head -3 test.txt |sed -r 's/(.*)/A:&/'
A:root:x:0:0:roprot:/root:/bin/bash
A:bin:x:1:1:bin:/bin:/sbin/Nologin
A:daemon:x:2:2:daemon:/sbin:/sbin/nologin

说明: 在此&代表前面括号中的内容=“\ 1”

[root@adai003 sed]# head -3 test.txt |sed -r 's/(.*)/A:\1/'
A:root:x:0:0:roprot:/root:/bin/bash
A:bin:x:1:1:bin:/bin:/sbin/Nologin
A:daemon:x:2:2:daemon:/sbin:/sbin/nologin

转载于:https://my.oschina.net/1995blog/blog/1593432

分享到:
评论

相关推荐

    sedsed工具

    **sedsed工具详解** `sedsed`工具是基于经典的`sed`命令行工具的扩展,它提供了更方便的功能和增强的用法。`sed`(流编辑器,Stream Editor)是一个强大的文本处理工具,常用于对输入流(标准输入)或文件进行模式...

    4.sed工具.doc

    4.sed工具.doc

    awk雨sed的两个工具的使用

    下面将详细讲述sed工具的使用方法。 一、替换 替换是文本处理中经常使用到的操作,sed提供了丰富的替换功能。 1. 神奇变换(y命令的使用) y命令是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工具介绍** `sed` 是“流编辑器”(Stream Editor)的缩写,它是一种功能强大的文本处理工具,广泛应用于Linux和Unix系统中。`sed` 可以读取数据流,对输入的数据进行各种操作,如替换、删除、插入等,并将...

    sed-4.2.1-setup

    压缩包中的 **sed-4.2.1-setup.exe** 文件是Windows下的可执行文件,负责安装sed工具。运行此文件将按照向导提示进行安装,完成后用户可以在命令行中使用sed命令进行文本处理工作。 总的来说,sed是一个极其有用的...

    Linux-02sed.ppt

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

    使用sed grep工具过滤实例

    ### 使用sed与grep工具过滤实例详解 在处理大量数据时,掌握并熟练运用Linux环境下的文本处理工具至关重要。本文档将详细介绍如何利用sed与grep工具完成特定的数据过滤任务,包括去除特殊符号、按指定规则分割字符...

    windows下cmd程序sed命令所需文件

    在Windows环境下,`cmd`命令行工具通常用于执行各种系统级操作,而`sed`(流编辑器,Stream Editor)是Unix/Linux系统中一个强大的文本处理工具,它在Windows下的应用可能需要额外的配置。本篇文章将详细介绍如何在...

    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使用方法详解sed使用方法详解

    sed(stream editor)是一种强大的文本处理工具,在Linux和Unix环境中被广泛用于非交互式的文本编辑任务。它能够读取输入流(通常来自文件或标准输入),执行指定的操作,并将结果输出到标准输出或其他文件中。sed...

    sed基础实例练习

    其中,sed是流编辑器,它是一个强大的文本处理工具,主要用来对文本进行过滤和转换。sed通过将指定的命令应用于文本流(通常是文件内容或标准输入),从而对流中的数据进行处理,并将结果输出到标准输出。 在标题...

    sed.exe win x32 x64

    sed(流编辑器Stream Editor)是一个功能强大的文本处理工具,常用于Linux和Unix系统中,但在Windows上也可以通过类似sed.exe这样的实现来使用。它支持对输入流(stdin)或文件进行读取、处理和写入数据,可以执行...

    Sed与Awk (中文版)

    **sed和awk工具的介绍与应用** sed和awk是广泛应用于UNIX系统中的两个文本处理工具。sed是流编辑器(stream editor)的缩写,而awk则是一种编程语言,得名于其三位开发者:Alfred Aho、Peter J. Weinberger和Brian ...

    通用线程sed 实例

    本文将深入介绍sed的基础概念及其高级用法,并通过一系列实用示例帮助读者掌握这一工具。 #### sed的应用场景 在UNIX世界中,虽然vi、emacs等编辑器广受欢迎,但在批量处理文件或自动化编辑任务方面,sed表现出色...

    sed.exe.rar

    至于压缩包内的"sed.exe"文件,它是sed工具的可执行程序,用户可以直接在命令行窗口中运行,以处理文本数据。使用方法通常包括指定命令选项、输入文件、模式空间操作以及输出选项。例如,`sed 's/old/new/g' input....

    sed手册完整版

    sed(Stream Editor)是一种非交互式的文本编辑工具,适用于自动化处理文本编辑任务。当你面临以下几种情况时,使用sed会非常有效: - **处理大文件:** 对于过大的文件,直接使用交互式编辑器可能会很耗时或导致...

    linux下SED脚本参考

    Linux下的SED脚本是一种强大的文本处理工具,它允许用户对输入的文本进行快速的模式匹配、编辑和转换。SED是“Stream EDitor”的缩写,意思是“流编辑器”。它是一种非交互式的命令行工具,通过脚本进行文本流的处理...

    SED与AWK 高清第三版

    《SED与AWK 高清第三版》是一本专注于Linux系统中强大文本处理工具sed和awk的教程。在Linux环境中,sed和awk是不可或缺的工具,它们能够高效地处理大量文本数据,进行搜索、替换、格式化等操作,极大地提高了运维...

    sed Win32文本处理工具

    强大的命令行形式文本处理工具sed(GNU stream editor),此工具为win32移植版本,用于windows环境下,结合正则表达式可以批量完成大量文本文件的处理,相关学习文档本社区有大量的资源

Global site tag (gtag.js) - Google Analytics