linux命令:sed

   sed命令简介:

文本编辑器,流编辑器,行编辑器.默认不编辑原文件, 仅对模式空间中的数据做处理;

而后处理结束后,将模式空间打印至屏幕;

1.命令格式:

sed [option]‘addresscommand‘ file ...对这个或这些文件的某一段进行编辑

Address:(表示操作文本范围)

1、StartLine,EndLine

比如1,100

$:最后一行

2、/RegExp/ 使用正则表达式来匹配模式 必须使用//

/^root/

3、/pattern1/,/pattern2/

第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

4、LineNumber

指定某一行

5、StartLine, +N

从startLine开始,向后的N行;

Command:(表示操作命令)

d: 删除符合条件的行;

p: 显示符合条件的行;

a \string: 在指定的行后面追加新行,内容为string

\n:可以用于换行

i \string: 在指定的行前面添加新行,内容为string

r FILE: 将指定的文件的内容添加至符合条件的行处

w FILE: 将地址指定的范围内的行另存至指定的文件中;

s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式

匹配到的字符串(pattern 被查找的字符串,string替换为的字符串)

s/pattern/string/g 这样表示所有查到的字符串都被替换掉

加修饰符

g: 全局替换

i: 忽略字符大小写

s///: s###, [email protected]@@   分割符也可以用###和@@@作为分隔符

\(\), \1, \2

l..e: like-->liker

love-->lover

like-->Like

love-->Love sed ‘s/l(..e)/L\1/g‘

&: 引用模式匹配整个串

sed ‘s/\(l..e\)/\1r/g‘ = sed ‘s/l..e/&r/g‘

2.命令功能:

文本编辑器,流编辑器,行编辑器.默认不编辑原文件, 仅对模式空间中的数据做处理;

而后处理结束后,将模式空间打印至屏幕;

3.命令参数:

-n: 静默模式,不再默认显示模式空间中的内容

-i: 直接修改原文件

-e SCRIPT -e SCRIPT:可以同时执行多个脚本

-f /PATH/TO/SED_SCRIPT

sed -f /path/to/scripts  file

表示/path/to/scripts的脚本都对file文件执行

-r: 表示使用扩展正则表达式

4.命令实例:

1、删除/etc/grub.conf文件中行首的空白符;

sed -r ‘s/^[[:space:]]+//g‘ /etc/grub.conf

[[email protected] ~]# sed -r ‘s/^[[:space:]]+//g‘ /etc/grub.conf

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/sda2

#          initrd /initrd-[generic-]version.img

#boot=/dev/sda

2、替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5;

sed ‘s/\(id:\)[[:digit:]]\(:initdefault:\)/\15\2/g‘ /etc/inittab

[[email protected] ~]# sed ‘s/\(id:\)[[:digit:]]\(:initdefault:\)/\15\2/g‘ /etc/inittab

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:5:initdefault:

3、删除/etc/inittab文件开头的#;

sed ‘s/^#//g‘ /etc/inittab

[[email protected] ~]# sed ‘s/^#//g‘ /etc/inittab

0 - halt (Do NOT set initdefault to this)

1 - Single user mode

2 - Multiuser, without NFS (The same as 3, if you do not have networking)

3 - Full multiuser mode

4 - unused

5 - X11

6 - reboot (Do NOT set initdefault to this)

id:3:initdefault:

4、删除/etc/inittab文件中空白行;

sed ‘/^$/d‘ /etc/inittab

5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

sed ‘s/^#[[:space:]]\{1,\}//g‘ /etc/inittab

或者sed -r ‘s/^#[[:space:]]+//g‘ /etc/inittab

[[email protected] ~]# sed ‘s/^#[[:space:]]\{1,\}//g‘ /etc/inittab

inittab is only used by upstart for the default runlevel.

#

ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

System initialization is started by /etc/init/rcS.conf

#

Individual runlevels are started by /etc/init/rc.conf

#

Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf

#

Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,

with configuration in /etc/sysconfig/init.

#

For information on how to write upstart event handlers, or how

upstart works, see init(5), init(8), and initctl(8).

#

Default runlevel. The runlevels used are:

0 - halt (Do NOT set initdefault to this)

1 - Single user mode

2 - Multiuser, without NFS (The same as 3, if you do not have networking)

3 - Full multiuser mode

4 - unused

5 - X11

6 - reboot (Do NOT set initdefault to this)

id:3:initdefault:

6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#

sed ‘s/^[[:space:]]\{1,\}#//g‘

7、取出一个文件路径的目录名称;

echo "/etc/inittab/" | sed -r ‘s#^(/.*/)[^/]+/?#\1#g‘

[[email protected] test]# echo "/etc/inittab/" | sed -r ‘s#^(/.*/)[^/]+/?#\1#g‘

/etc/

取文件名(基名):

echo "/etc/inittab/" | sed -r ‘s#^/.*/([^/]+)/?#\1#g‘

[[email protected] test]# echo "/etc/inittab/" | sed -r ‘s#^/.*/([^/]+)/?#\1#g‘

inittab

时间: 2024-10-09 22:59:57

linux命令:sed的相关文章

[ Linux命令 ] sed

一.sed是什么? Linux sed命令是利用script来处理文本文件. sed可依照script的指令,来处理.编辑文本文件. Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 二.sed基本语法 sed基本用法: sed: 流编辑器,行编辑器 ( 全屏编辑器:vim ) 模式空间:默认不编辑源文件,仅对模式空间中的数据做处理 sed [option]'AddressCommand' file ... -n: 静默模式    不再默认显示模式空间中的内容    

Linux 命令---- sed

sed 命令:  常用场景:1. 在指定位置增加内容2. 删除指定字符所在的行:3. 替换指定字符串为新的字符串:4. 只显示包含指定字符的内容 Answer:-i: 表示将修改直接持久化到文件中1.>sed -i '/test/a\one\ntwo' test.txt // 在存在test字符串的行后添加one 然后换行添加two 注: 不用加 g选项 就默认把符合条件的都加入 a\ 后面的内容 加入一行默认是自动换行:最后一行不用加 \n >sed -i '#test_3#a\two' t

linux命令-sed,uniq,cut,wc

sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 [[email protected] ~]# sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使

Linux命令----sed和awk

sed -n :加上-n参数后,只有经过sed特殊处理的哪一行或者动作才会被列出来. 动作说明:[n1,n2[function]] function : a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行) c:取代,c的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行 d:删除,d后面通常不接任何东西; i:插入,i后面可以接字符串,而这些字符串会出现在新的一行(目前的上一行) p:列印, s:取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表示法

Linux命令sed

sed流编辑器:Stream EDitor sed行编辑器,使用sed,将文件的行加载到内存,符合sed模式空间的显示到屏幕上,sed默认不编辑文件,仅对模式空间的数据处理,处理结束后,将符合模式空间的行打印到屏幕上 sed模式空间 sed [options选项] 'AddressCommand' file ... options: 选项,如 -n静默模式,只显示符合条件的行,不显示模式空间的内容 Address: 指的是文件行的地址,如第一行到第10行 Command: 指的是对文件行的操作,

Linux 常用命令sed/awk/grep及正则表达式

linux命令sed和awk sed 主要功能 sed,stream editor.是一个"非交互式"字符流编辑器.输入流通过程序并输出到标准输出端. sed主要用来自动编辑一个或者多个文件(替换,插入,删除,追加,更改) 常见应用 抽区域 匹配正则表达式 比较域 增加,附加,替换 执行过程 sed一次处理一行或多行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区

linux下的文本处理命令sed&awk&grep

Sedsed 是个精简的.非交互式的编辑器.他能执行和编辑vi和emacs相同的编辑任务.sed编辑器不提供交互使用方式:只能在命令行输入编辑命令.指定文件名,然后在屏幕上察看输出.sed编辑器没有破坏性.他不会修改文件,除非用shell重定向来保存输出结果.缺省情况下,所以的输出都被打印到屏幕上.sed 编辑器在shell脚本中非常有用,因为在shell脚本中使用像vi或emacs这类交互式编辑器,需求脚本用户精通该编辑器,而且还会导致用户对打开 的 文件做出不必的修改.如果需要执行多项编辑任

关于linux中sed命令的简单用法

linux中sed的学习和使用 今天突然用到了sed这个命令,就即兴学习了一波突然感觉这个功能还是很强的.sed在#man sed下文档查看解释的是:用于过滤和转换文本的流编辑器.即如下图: 我自己用过这个命令之后感觉对于文档来说可以显示某个区间行,显示结果还可以在段前后添加内容删除,替换内容.但是最后才发现,怎么还能直接修改到文件里不仅仅是显示出来,文件内容直接被修改了. 下面就一一介绍这个有趣的命令,莫急莫急一个一个来. 首先找个文件(没用的文件且有内容,搞坏了系统文件可不好玩了)来当测试文

利用多核CPU来加速Linux命令 — awk、sed、bzip2、grep、wc

你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作--一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核.借用卡通人物Cartman的话,"如何我能使用这些内核"?要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作

《sed的流艺术之三》-linux命令五分钟系列之二十三

本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. === [正文开始] 上文接:<sed的流艺术之二>-linux命令五分钟系列之二十二 例五 给某些字符串后面插入些内容 [[email protected] programming]$ cat mysed.txt Beijing London[[email protected] programm