sed命令 学习笔记

sed 基本用法

sed : Stream EDitor 行编辑器      (全屏编辑器: vim)

sed: 默认打印模式空间  默认不编辑原文件,仅对模式空间中的数据做处理; 而后,处理结束后,将模式空间打印至屏幕

sed [optiones] ‘ADDressCommand‘ file ...

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

-i : 直接修改原文件

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

-f /PATH/TO/SED_SCRIPT : 添加 "脚本文件" 到程序的运行列表

sed -f /path/to/scripts file

-r : 使用扩展正则表达式   ( 默认支持基本正则表达式 )

ADDress  地址表示

1 . StratLine , EndLine   比如 : 1 , 100

$ 最后一行

$-1 倒数第二行

2 . /RegExp/   比如 : /^root/

3 . /pattern1/ , /pattern2/      比如 : 第一次被 pattern1 匹配到的行开始, 至第一次被 pattern2 匹配到的行结束,这中间的所有行

4 . LineNumber   指定的行

5 . StartLine, +N      从 StartLine 开始, 向后的 N 行

Command:

d : 删除符合条件的行

[[email protected] ~]# sed ‘5,$d‘ /etc/fstab       #删除 /etc/fstab 文件中的第五行到最后一行
[[email protected] ~]# sed ‘/oot/d‘ /etc/fstab    #删除 /etc/fstab 文件中所有包含 oot 的行
[[email protected] ~]# sed ‘1,+2d‘ /etc/fstab     #删除 /etc/fstab 文件中,第一行开始并向后两行的内容(3行)
[[email protected] ~]# sed ‘1d‘ /etc/fstab          #只删除第一行
[[email protected] ~]# sed ‘/^\//d‘ /etc/fstab     #删除以 / 开头的行, ^\/ ‘\‘为转译(使用字符本身的意义)

p : 显示符合条件的行

[[email protected] ~]# sed -n ‘/^\//p‘ /etc/fstab  #只显示以 ‘\‘ 开头的行  -n:不显示模式空间中的内容

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

[[email protected] ~]# sed ‘/^\//a \#hello word‘ /etc/fstab    #在 / 开头的行下面,追加 /#hello word
[[email protected] ~]# sed ‘/^\//a \#hello word\n\#hello linux‘ /etc/fstab #追加两行 \n : 换行符

i \string : 在指定的行前面追加新行,内容为 "string"  用法与 a \string 相同

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

[[email protected] ~]# sed ‘2r /etc/issue‘ /etc/fstab   #在 /etc/fstab 的第二行后面,添加文件 /etc/issue 的内容
[[email protected] ~]# sed ‘1,2r /etc/issue‘ /etc/fstab  #在 /etc/fstab 的第一行,第二行后面分别添加 /etc/issue 的内容

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

[[email protected] ~]# sed ‘/oot/w /tmp/oot.txt‘ /etc/fstab   #将 /etc/fstab 文件中包含 oot 的行,保存至 /tmp/oot.txt 文件中

s /pattern/string/修饰符 : 表示查找并替换  (默认只替换每行中第一次被模式匹配到的字符串)

pattern : 可以使用正则表达式的元字符

修饰符

g : 全局替换

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

s/// : s### : [email protected]@@  作用相同

[[email protected] ~]# sed ‘[email protected]/@#@g‘ /etc/fstab     #将 /etc/fstab 文件中的 / 替换为 # (g 全局替换)
[[email protected] ~]# history | sed ‘s#^[[:space:]]*##‘   #将 history 行首的空格删除 (可以删除多个空白字符)

练习

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

    sed -r ‘[email protected]^[[:spapce:]][email protected]@g‘ /etc/grub.conf

  2. 删除 /etc/inittab 文件中的空白行

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

  3. 删除 /etc/inittab 文件中开头的 # 号

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

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

    sed -r ‘[email protected]^#[[:space:]][email protected]@g‘ /etc/inittab

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

    sed -r ‘[email protected]^[[:space:]]+#@@g‘ /etc/inittab

  6. 取出一个文件路径的目录名称

    echo "/etc/rc.d/" | sed ‘[email protected]^(/.*/)[^/]+/[email protected]\[email protected]‘

时间: 2024-10-10 15:00:05

sed命令 学习笔记的相关文章

Linux Sed命令学习笔记

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

sed&&awk学习笔记(1)

sed和awk的基本使用 在sed和awk中,每个指令都包括两个部分:模式和过程.模式是由斜杠(/)分割的正则表达式.过程制定一个或多个将被执行的动作. 执行过程中,读取脚本中的第一个指令并检测当前行的模式,如果没有匹配,这个过程被忽略并读取下一个指令.读取所有的指令,而不是读取与输入行匹配的第一条指令. 所有指令被解释并应用于单个行后,sed输出该行并循环处理每个输入行.awk不自动输出行,脚本中的指令控制awk最终所做的事情. 使用sed 调用sed有两种方法:在命令行上指定编辑指令,或者将

Linux命令学习笔记目录

Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 2.linux命令学习笔记(2):cd命令 3.linux命令学习笔记(3):pwd命令 4.linux命令学习笔记(4):mkdir命令 5.linux命令学习笔记(5):rm 命令 6.linux命令学习笔记(6):rmdir 命令 7.linux命令学习笔记(7):mv命令 8.linux命

linux命令学习笔记-持续更新版

shell 获取前一条命令是否执行成功 if [ $? -eq 0 ];then   echo "success" fi linux命令学习笔记-持续更新版

Linux命令学习笔记1

1.Linux命令学习 2.Mkdir /data       -创建文件夹 在/下创建文件夹 data 3.Cd               -目录切换 列如cd / 4.Touch /data/1.txt  -创建当前目录下文件 5.vi /data/1.txt     -编辑器编辑当前文件 i -进入编辑模式  esc键退出编辑模式  :wq -保存 6.vim /data/1.txt    -高级编辑器 7.cat /data/1.txt     -查看文件 -特殊用法: cat >>

mysql基础命令学习笔记

这里不会涉及一些mysql数据库安装之类的知识,但是会将自己学习以及使用mysql一些最常用的mysql语句总结到本篇文章,作为自己的学习记录和笔记.基本的环境为CentOS 6.5 数据库为mysql5.6.30. 1.启动和停止Mysql服务 1.  /etc/init.d/mysql restar   #重启 2.  /etc/init.d/mysql stop     #停止 3.  /etc/init.d/mysql start    #启动 4.  /etc/init.d/mysql

linux 网络命令学习笔记

1.临时配置IP 命令 a.  ifconfig eth0 192.168.0.1 netmask 255.255.255.255 b.  或者直接在linux设置里面关于网络设置部分设置 2.网络查看命令 a. netstat -runla         -t 列出TCP协议端口 -u 列出UDP协议端口 -a 列出所有网络链接 -l 列出仅在监听状态的网络服务 (listing) -n 不使用服务器名和域名,只是列出IP地址和端口号 b. ifconfig /all        查看当前

Sed命令学习

1.Sed简介     流数据编辑器 Stream editer(sed),它是一种行编辑器(对应于全屏编辑器),一次处理一行的内容.默认不编辑原文件内容(-i会直接修改原文件).处理时,它先将当前符合模式的行存储在临时缓冲区内,处理完之后,把缓冲区的内容送往屏幕打印出来. 2.命令格式 sed  [option] 'AddressCommand'  file.... Address     起始行,结束行; 1,50                                     se

linux命令学习笔记( 2 ) : cd 命令

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 1. 命令格式: cd [目录名] 2. 命令功能: 切换当前目录至dirName 3. 常用范例 3.1 例一:进入系统根目录 命令: cd / 输出: [[email protected] ~]# cd / 说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了 命令: c