linux sed命令(每日一学)

第1章 sed基础

1.1 sed的选项

-r              支持扩展正则

-n              取消默认输出

-i               直接修改不输出到桌面

-i.bak        备份

1.2 sed的书写格式

sed    ‘条件命令‘

sed      ‘pattern命令‘

sed      ‘模式命令‘

1.3 sed命令执行过程

1.读取文件内容第1行

2.是否满足条件

1).满足条件 执行对应的命令 p  s  d

2).不满足   继续第1步

3.截止到文件的最后一行

第2章 sed命令的使用

sed增删改查   不加i选项只会把修改内容输出到并没有真正修改,加上i选项会直接修改文件内容

2.1 sed 增加  cai

c   replace 替换

a   append 追加

i   insert 插入

2.1.1 在person.txt文件第三行下追加12306,xiao,UFO

查看person.txt文件

[[email protected] lx]# cat person.txt

101,zeq,CEO

102,zhang,CTO

103,Love,COO

104,yy,CFO

105,faker,CIO

110,ahao,COCO

第三行下追加12306,xiao,UFO

[[email protected] lx]# sed ‘3a12306,xiao,UFO‘ person.txt      a追加,3a在第三行下追加

101,zeq,CEO

102,zhang,CTO

103,Love,COO

12306,xiao,UFO

104,yy,CFO

105,faker,CIO

110,ahao,COCO

2.1.2 在person.txt文件第三行上插入12306,xiao,UFO

[[email protected] lx]# sed ‘3i12306,xiao,UFO‘ person.txt

101,zeq,CEO

102,zhang,CTO

12306,xiao,UFO

103,Love,COO

104,yy,CFO

105,faker,CIO

110,ahao,COCO

2.1.3 把person.txt文件第三行替换成12306,xiao,UFO

[roo[email protected] lx]# sed ‘3c12306,xiao,UFO‘ person.txt

101,zeq,CEO

102,zhang,CTO

12306,xiao,UFO

104,yy,CFO

105,faker,CIO

110,ahao,COCO

2.1.4 在文件最后一行增加

12306,xiao,UFO

12580,tao,XO

[[email protected] lx]# sed  ‘$a12306,xiao,UFO\n12580,tao,XO‘ person.txt    $最后一行   \n回车

101,zeq,CEO

102,zhang,CTO

103,Love,COO

104,yy,CFO

105,faker,CIO

110,ahao,COCO

12306,xiao,UFO

12580,tao,XO

2.2 sed 删除 d

2.2.1 删除第2行到第5行

[[email protected] lx]# sed ‘2,5d‘ person.txt

101,zeq,CEO

110,ahao,COCO

2.2.2 删除从yy开始的行到文件结尾的内容

[[email protected] lx]# sed   ‘/yy/,$d‘ person.txt             $文件结尾

101,zeq,CEO

102,zhang,CTO

103,Love,COO

2.2.3 删除包含ahao的行

[[email protected] lx]# sed ‘/ahao/d‘ person.txt

101,zeq,CEO

102,zhang,CTO

103,Love,COO

104,yy,CFO

105,faker,CIO

2.2.4 删除不包含ahao的行

[[email protected] lx]# sed ‘/ahao/!d‘ person.txt             !取反,排除

110,ahao,COCO

2.3 sed 替换 ‘s###g‘

2.3.1 替换掉所有的数字

[[email protected] lx]# sed ‘s#[0-9]##g‘  person.txt

,zeq,CEO

,zhang,CTO

,Love,COO

,yy,CFO

,faker,CIO

,ahao,COCO

2.3.2 替换掉每行中的第一个数字

[[email protected] lx]# sed ‘s#[0-9]##‘  person.txt       sed ‘s#[0-9]##‘ 不加g,默认是匹配到每行第一个数字       sed ‘s#[0-9]##‘ 匹配每行第二个数字

01,zeq,CEO

02,zhang,CTO

03,Love,COO

04,yy,CFO

05,faker,CIO

10,ahao,COCO

2.3.3 后向引用  取出ip地址

[[email protected] ~]# ifconfig eth0 |sed -rn ‘2s#^.*r:(.*)  Bc.*#\1#gp‘

10.0.0.200
[[email protected] ~]# ifconfig eth0 |awk -F‘[ :]+‘   ‘NR==2{print $4}‘

10.0.0.200
[[email protected] ~]# ifconfig eth0 |awk -F‘addr:|  Bc‘   ‘NR==2{print $2}‘

10.0.0.200
[[email protected] ~]# ifconfig eth0 |awk -F‘[^0-9.]+‘   ‘NR==2{print $2}‘

10.0.0.200

2.4 sed  查

2.4.1 显示文件的第5行

[[email protected] ~]# sed -n 5p person.txt

105,faker,CIO

2.4.2 显示文件的第2行到第5行

[[email protected] ~]# sed -n ‘2,5p‘ person.txt

102,zhang,CTO

103,Love,COO

104,yy,CFO

105,faker,CIO

2.4.3 显示文件最后一行

[[email protected] ~]# sed -n ‘$p‘ person.txt

110,ahao,COCO

2.4.4 显示文件中包含zeq的行

[[email protected] ~]# sed -n ‘/zeq/p‘ person.txt

101,zeq,CEO

2.4.5 显示文件中从包含101的行到105的行

[[email protected] ~]# sed -n ‘/101/,/105/p‘ person.txt

101,zeq,CEO

102,zhang,CTO

103,Love,COO

104,yy,CFO

105,faker,CIO

2.4.6 特殊写法:显示文件的第1和4行和5行

[[email protected] ~]# sed -n ‘1p ;4p; 5p‘ person.txt

101,zeq,CEO

104,yy,CFO

105,faker,CIO

2.4.7 显示有规律的行

[[email protected] ~]# seq 10 |sed -n ‘1~2p‘

1

3

5

7

9

2.5 sed命令中使用变量

[email protected] ~]# x=zeq               设置x变量为zeq

[[email protected] ~]# y=zeq1             设置y变量为zeq1

[[email protected] ~]# sed ‘s#$x#$y#g‘  person.txt

101,zeq1,CEO

102,zhang,CTO

103,Love,COO

104,yy,CFO

105,faker,CIO

110,ahao,COCO

12306,xiao.UFO

2.5.1 把文件person.txt文件中的每一行的内容 替换为对应的行号

for n in {1..7}                     这里使用的shell脚本中的for循环

do

     sed -i.bak "${n}s#.*#$n#g" person.txt

done

2.5.2 批量重命名:删除文件名中的html_

touch zeq_html_{01..10}.jpg

方法1  命令行格式

[[email protected] data]# ls *.jpg|sed -r "s#(.*)(_.*)#mv & zeq\2#g"|bash
方法2  for循环

for i in {01..10}

do

mv zeq_${i}.jpg  zeq_html_${i}.jpg 

done
方法3  rename

rename  html_  ""    *.jpg        rename   修改谁    改为什么    修改什么文件

原文地址:https://www.cnblogs.com/shawhe/p/9552789.html

时间: 2024-12-16 17:42:44

linux sed命令(每日一学)的相关文章

理解linux sed命令

理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反

Linux sed命令小结

1.什么是sed sed,流编辑器,即stream editor.它可以将文本文件的每一行读取到内存,即所谓sed的模式空间,在这个模式空间中可以进行编辑并输出. 2.sed的使用格式 sed [options] "AdressCommand" file1,file2,... 说明: a.Adress实际上是用来确定编辑文件的范围,可以是精确的某一行,也可以是从某一行到某一行,也   可以用正则进行过滤匹配. b.Command表示将符合Address的行进行XXX操作.注意默认情况下

linux sed命令中的正则表达式问号、加号、圆括号等需要转义

linux sed命令内的正则表达式语法分两种,一种叫Basic (BRE) Syntax,另一种叫Extended (ERE) Syntax.默认使用的是BRE. 这个BRE就是一个简化版,语法稍微有点不一样,问号.加号.圆括号.花括号和竖线没有特殊含义,就代表字符本身,如果要原本定义的实现特殊含义,需要用反斜杠(\)转义……详情请见: https://www.gnu.org/software/sed/manual/html_node/BRE-vs-ERE.html#BRE-vs-ERE

linux sed命令详解

Linux环境:Ubuntu16.04 sed命令 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html http://blog.csdn.net/yiqingnian28/article/details/23133043 正则表达式 http://blog.csdn.net/wzzfeitian/article/details/8842371 sed -help 查看sed的用法 -n, --quiet, --sile

2.2 linux sed命令详解

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数

Linux sed命令使用

sed基本用法: sed:stream Editor 行编辑器 sed:模式空间 默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后,将模式空间内容打印出来 sed  [options]'AddressCommand' file ... 是对file中的文件中的符合Address指定地址范围内的行执行Command编辑命令 options: -n:静默模式 不显示模式空间中的内容,仅显示被匹配的内容 -i:直接修改原文件 -e SCRIPT(脚本) -e SCRIPT:可以同时执行多个脚本

linux sed命令详解,非常强大

转载:http://blog.chinaunix.net/u/22677/showart_1076318.html   1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每处理完一行就将其从临时缓冲区删除,然后将下一行读

Linux Sed命令学习笔记

1 功能说明 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出或者加入i参数.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 小结:sed的功能是,对字符串进行增加.删除.改变.查找,即增删改查! 2 语法格式 s

Linux sed命令 以行为单位编辑文本,或替换文本中的文字

sed -e 4a\newLine testfile 首先查看testfile中的内容如下: $ cat testfile #查看testfile 中的内容 HELLO LINUX! Linux is a free unix-type opterating system. This is a linux testfile! Linux test 使用sed命令后,输出结果如下: $ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串 HELLO LINUX