shell--学习 sed

sed:数据流编辑器

读一行到内存处理一行然后输出一行。

模式空间:

sed:默认不编辑源文件

sed [option]    ADDRESSCOMMAND   file

1、起始行、 结束行

sed   startline,endline   file               sed 2,5p  file

2、模式匹配   /模式/

sed /^root/p   file                    匹配到会打印两次,因为每个本身都要打印

3、 /模式1/,/模式2/

sed /^l/,/^h/p   file       以l开头的行到以h结尾的行,都指第一次匹配的

4、只给一个数值,行号,表示精确指定某行

sed  5p  file

5、指定起始行,使用+N,表示从指定的行开始,向后的N行,共N+1行内容
sed 10,+5 file

sed命令:
    p:显示符合条件的行
    d:删除符合条件的行              sed  /^‘  ‘/d   file    删除空白开头的行
    a: append 用法:a \string 在指定的行后追加新行,内容为string

# sed    ‘/d$/a  \hello world\nhello world‘   file      在以d结尾后面加两行内容

其实就把这些内容当成一个字符串追加进来,只是\n在文本里被当成换行符处理了
    i:insert 用法:i \string 在指定的行的前面插入新行。内容为string \n
    r:r filename 将指定的文件的内容添加至符合条件的行处   sed ‘/d$/r/root/t2‘ t
    w:w filename 将指定范围内的内容另存为到指定的文件中(重复会覆盖)  sed /d$/w /tmp/d.txt  t
    s:查找并替换。s/匹配模式/要替换的内容/;@ # $ % a
每行所有匹配到的内容都替换:
    g:全局替换                          sed  s/d/D/g file     sed/s/l..e/&r/g   file    &指匹配的整体

i:查找的时候忽略字符的大小写

sed的选项:
        
-n:静态模式,不显示模式空间中的内容,只显示匹配条件的行        sed -n 1p  file
-r:使用扩展正则表达式  sed  -r  s/(l..e)(m+)/\1r\2xx/g  file   \1指括号里的整体(后向引用) 不用转义括号
-i:直接修改源文件

练习:
有一个文本文件:

username,age,gender,salary
zhangsan,20,F,2000

sed的后向引用:
    &表示引用模式匹配的整个字符串

练习:
1、将history命令的结果行首的空白字符删掉[[:space:]]

history | sed s/^[[:space:]]//g
2、取出一个文件路径的父目录 比如/var/log/mysql/acces.log ===>/var/log/mysql/
                  echo"/var/log/mysql" | sed -r ‘s#^(/?.*/).+/?#\1#g‘
3、删除文件中以空白字符+#开头的行中的空白字符及#
   #asdsdasd
==>
asdasd
sed -r  s/^[[:space:]]+#//g file

sed -r   ‘s/^(l.*e$)/#\1/g‘  file    给l开头e结尾的加注释#

时间: 2024-12-30 03:31:37

shell--学习 sed的相关文章

Linux Shell学习-sed命令详解

(1).sed介绍 Sed是流编辑器,stream editor,它是一个将一些列编辑命令作用于一批文本文件的理想工具. (2).sed工作原理 Sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量,甚至来自管道的文本. Sed从文本的一个文本行或标准输入中读取数据,将其复制到缓冲区,然后读取命令行或脚本的第一个命令,对此命令要求的行号进行编辑,重复此过程,直到命令行或脚本中的所有命令都执行完毕. 相对于诸如vi等其他文本编辑器

Shell学习:sed命令

http://blog.sina.com.cn/s/blog_a56ef5490101cn58.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] ‘command’ 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加

第四章 shell学习之sed命令和awk编程

sed命令 sed只是对缓冲区中原始文件的副本进行编辑,不改变源文件,所以要保存则要重定向到另一个文件 sed三种方式: 1.sed [选项] 'sed命令' 输入文件 2.sed [选项] -f sed脚本文件 输入文件 3../sed脚本文件 输入文件 其中3的sed脚本文件要以#! bin/sed -f等开头 选项: -n 不打印所有行到标准输出,默认先打印匹配的再打印所有 -e 关联多个sed命令 -f 调用sed脚本文件 定位文本: x x为指定行号 x,y 从x到y行 /patter

学习sed,awk最好的路径

编写shell脚本的时候,最常用的便是sed,awk等工具. 如果没有一个好的学习路径,学起来会发现"知其然,不知其所以然".很多别人写的脚本看不懂. 其实,这里可能主要有一个学习路径的欠缺.学习sed之前,应该先了解ed,这个远古时代的文本编辑器,只有对它有了相应了解,才能知道为何那么写.

【转】十分有用的linux shell学习总结

在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某个Shell命令的使用方式曾经在哪一篇博客中 予以了说明,所以不得不多次点击多篇博客,直到找到想要那篇的为止,鉴于此,为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的目录以供大家参 阅和查

第五章 shell学习之文件的排序、合并和分割

sort命令 sort [选项] [输入文件] 选项: -c 测试文件是否已经排序,如果未被排序则输出第一个未被排序的记录 -k 指定排序的域 -m 合并两个已排序的文件,合并的文件也已经排序,如sort -m a1 a2,a1的记录被有序的插入a2 -n 根据数字的大小进行排序,一般放在域号后,如-k3n -o 将输出重定向到指定文件 -r 将排序结果逆向显示 -t 改变域分割符,如-t: -u 去除结果中的重复行 sort和awk联合 例: [[email protected] tmp]#

第六章 shell学习之变量和引用

变量 本地变量:类似于局部变量,只在当前shell进程有效 环境变量:适用于所有登录进程所产生的子进程 位置参数:用于向shell脚本传递参数,只读 变量替换和赋值 引用变量值就称为变量替换,$就为变量替换符号,如a为变量名则$a或${a}为变量值 将值赋给某个变量名就称为变量赋值,格式:variable=value或${ variable=value },如值中包含空格则必须用"" 清除变量的值: unset 变量名 设置只读变量: variable=value readonly v

Shell学习之路和我发布过的Shell脚本博文

Shell学习之路 目录 Shell学习之路[第一篇]:别名,管道,用户配置文件,变量,read Shell学习之路[第二篇]:条件测试,运算符,选择结构,for循环结构 Shell学习之路[第三篇]:While循环,C-for循环,Until循环,case分支结构,流程控制语句 Shell学习之路[第四篇]:函数,数组,变量替换 Shell学习之路[第五篇]:多线程脚本 Shell学习之路[第六篇]:Trap信号捕捉命令介绍与Shell结合实战讲解 Shell学习之路[第七篇]:Linux下d

Shell学习之结合正则表达式与通配符的使用(五)

Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来就行匹配. 通配符 符号 作用 * 匹配任何字符串/文本,包括空字符串:*代表任意字

shell学习之tr命令

tr命令不接受指定的文件参数,而只是对标准输入进行翻译, tr是translate的简写,亦即翻译,需要注意的是,它不能翻译句子,只能翻译单个字符. 首先,定义变量:     [[email protected]]#A=1,,2,,,3,,,4,,,5 下面以示例对该命令以及其常用选项进行介绍. 示例: 1.  无选项设置情况     [[email protected]]# echo $A | tr  ',' ' '         1 2   3   4   5     [[email pr