sed用法(一)

sed用法(一)

sed 可以实现 grep 的大部分功能,而且还可以查找替换。唯一缺陷是不能有颜色区分显示。

-n 只打印符合规则的行

打印指定行 p表示print

  • 知识点一:

#sed ‘10‘p -n 1.txt 打印第10行

#sed ‘1,4‘p -n 1.txt 打印1-4行

#sed ‘5,$‘p -n 1.txt 打印5到末行

#sed ‘10‘p 1.txt 不加 -n 打印所有的行,如下图所示:

#sed ‘/root/‘p 1.txt|wc -l

#sed ‘/root/‘p -n 1.txt|wc -l

  • 知识点二:

打印包含某个字符串的行

#sed -n ‘/root/‘p 1.txt

  • 知识点三:

可以使用 ^ . * $ 等特殊符号

#sed -n ‘/root/‘p 1.txt 【含有root的行】

#sed -n ‘/^roo/‘p 1.txt 【以roo开头的行】

注意:^[roo]与^(roo)的区别!

#sed -n ‘/r.*t/‘p 1.txt 贪婪匹配==cgrep -n ‘r.*t‘ 1.txt

#sed -n ‘/r\?t/‘p 1.txt ?需要脱意符号\ ==egrep -n ‘r?t‘ 2.txt==grep -n ‘r\?t‘ 2.txt

  • 知识点四:

sed 不识别 + ? 并且符号| {} 组合符号() 等符号,需要借助脱意符号 \ 或者 使用选项 -r

#sed -n -r ‘/ro+/‘p 1.txt == egrep -n ‘ro+‘ 1.txt == grep -n ‘ro\+‘ 1.txt

#sed -n ‘/ro\+/‘p 1.txt

# sed -n ‘/\(oo\)\+/‘p 1.txt

# sed -n -r ‘/(oo)/‘p 1.txt

# sed -r -n ‘/roo|ftp/‘p 1.txt

sed支持grep的所有表达式,取非,开头结尾等,需要用-r。

  • 知识点五:

-e 同时进行多个表达式

#sed -e ‘/root/p‘ -e ‘/body/p‘ -n 1.txt

; 同时进行多个表达式

#sed ‘/root/p ; /body/p‘ -n 1.txt

一个分号即可,无需全部括起来。分号前面一定要有p,-n位置在前在后没有影响。如果一行里面,有root,又有body,那么会在屏幕上出现两次这个结果。如果是或者的命令,#sed -n -r ‘/root|body/‘p 1.txt 只会显示一次结果,或者的命令只会运行一次。

  • 知识点六:

不显示指定的行,并非删除文本中的行

#sed ‘/root/‘ d 1.txt 删除包含root的行

#sed ‘1‘d 1.txt 删除第一行 ‘1d‘ 或者 ‘1‘d

#sed ‘1,10‘d 1.txt 删除1到10行

#sed ‘/[a-zA-Z]/‘d 1.txt

#sed ‘/[0-9]/‘d 1.txt

  • 知识点七:

替换功能(重点,有时面试会问到!)

#sed ‘1,2s/ot/to/g‘ 1.txt 全局替换,全部显示

1,2表示替换第一行和第二行

s 替换的意思

g 全局替换

& 增加替换

命令里面的 / 可以用 # 或者 @ 替换

#sed ‘1,[email protected]@[email protected]‘ 1.txt

#sed ‘1,10s/nologin/login/g‘ 1.txt

#sed -n ‘1,10s/nologin/login/g‘p 1.txt 只显示1-10行修改的行

# sed -n ‘1,10s/nologin/login/gp‘ 1.txt 只显示1-10行修改的行

# sed -n ‘1,$s/nologin/login/g‘p 1.txt 修改第一行到最后一行并打印

# sed -n ‘1,10s/\/sbin\/nologin/login/g‘p 1.txt ==

#sed -n ‘1,[email protected]/sbin/[email protected]@g‘p 1.txt 只替换1-10行 /sbin/nologin 里面的nologin为 login,替换后,1-10行的/sbin/nologin替换为 /sbin/login

#sed -n ‘[email protected]^.*[email protected]login@g‘p 1.txt 修改所有的行为 login

#sed -n ‘[email protected]^.*[email protected]&[email protected]‘p 1.txt 在所有的行后面增加 login

  • 知识点八:

删除所有数字

#sed ‘s/[0-9]//g‘ 1.txt

其实就是把所有数字替换为空格

删除所有非数字

#sed ‘s/[^0-9]//g‘ 1.txt

删除所有特殊符号

#sed -n ‘s/[^0-9a-zA-Z]//g‘p 1.txt

  • 知识点九:

调换两个字符串位置(重点,面试会问到)

#head -n2 1.txt |sed -r ‘s/(root)(.*)(bash)/\3\2\1/‘==head -n2 1.txt |sed -r ‘s/(root)(.*)(bash)/\3\2\1/g‘

在sed中可以用()表示一个整体,本例中把 root 和 bash的位置调换,后面的\1\2\3 分别表示第一个小括号里面的内容,第二个小括号里面以及第三个小括号里面的内容。

# head -n2 1.txt |sed -r ‘s#(^[a-z0-9]+)(:.*)(:.*)#\3\2\1#g‘

前两行的第一段,第三段调换位置。

  • 知识点十:

-i 直接修改文件内容 【不建议使用】

#sed -i ‘1,19‘d 1.txt 直接删除文本里面的1-19行

#sed -i ‘s/ot/to/g‘ 1.txt

其实使用的是 s 的替换功能

时间: 2024-10-20 06:14:20

sed用法(一)的相关文章

linux之sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

sed用法详解

1. sed简介 sed是streameditor的简称,主要用来对文本的行进行处理,功能类似于awk,可以完美配合正则表达式,只是其更加简单,对文本的列处理功能较弱.处理文本时,sed将文件的一行存储在叫"模式空间"的一个缓冲区,处理完时,就默认将缓冲区的文本送至屏幕,接着处理下一行文本,直至将整个文件处理完. 2. sed用法与参数: sed用法: sed 选项 'commond' inputfile 选项: -e <script> 以-e指定的script来处理输入的

linux中sed用法

一.sed命令介绍: 1.含义:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件改动,但是不会再屏幕上返回结果. 2.功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等 3.参考:http://www.gnu.org/software/sed/manual/sed.html 二.sed用法 1.语法格式:

sed用法小结

在linux的学习和使用中,sed,awk,grep的用法的重要性不言而喻,本文从以下几个方面小结了sed的用法: 1.sed的含义 sed 是stream editor:就是流编辑器,和我们用到的vi是不同的,vi是全屏编辑器.而且sed是逐行将文件内容取入到内存,进过sed中指定命令进行处理,然后输出到屏幕的. 2.sed的用法及格式 sed [options] 'StartAdd,EndAddCommand' files,... [options] 指的是sed的选项.可以省略 Start

linux sed用法

linux之sed用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来. -e∶直接在指令列模式上进行 s

linux学习基础6之sed用法详解

1 sed 又称为流编辑器,它逐行将文本文件中的行读取到模式空间中间去,将符合编辑条件的行进行编辑后输出到显示器上来.默认sed不编辑原文件只处理模式空间中的内容. 2 sed用法 sed [option]'addresscommand[修饰符]' file 2.1 option -n 采用静默模式,所谓静默模式就是只输出被匹配到的行,不在默认显示模式空间中内容 -i 直接修改原文件 -r 使用扩展的正则表达式 -e 同时连接多个 sed 命令 如sed -e '$a \this is end

【转载】linux之sed用法

linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中

LeetCode(193. Valid Phone Numbers)(sed用法)

193. Valid Phone Numbers Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bash script to print all valid phone numbers. You may assume that a valid phone number must appear in one of the following two f

Linux三剑客之一sed用法

sed是一种流编辑器,主要针对文本行进行处理,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.然后读入下行,执行下一个循环.如果没有使诸如'D'的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间.这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出. 主要功能为主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换