广告

原创 sed命令--学习笔记

2017-7-11 16:26 308 0 分类: 软件与OS

sed(stream editor)是一种非交互式的流编辑器,通过多种转换修改流经它的文本。默认情况下,sed并不会改变原文件本身,而只是对流经sed命令的文本进行修改,并将修改后的结果打印到标准输出中。


sed以行为单位,每处理完一行就立即打印出来,然后处理下一行,直到全文结束。

为了进行sed命令实验,先把Linux的内核打印保存成文件:

$ dmesg >> dmesg.log



  1. s命令:查找与替换

    将第一个"Bluebooth"替换为"BLUETOOTH":$ sed 's/Bluetooth/BLUETOOTH/' dmesg.log

    将前两个"Bluebooth"替换为"BLUETOOTH":$ sed 's/Bluetooth/BLUETOOTH/2' dmesg.log

    将所有"Bluebooth"替换为"BLUETOOTH":$ sed 's/Bluetooth/BLUETOOTH/g' dmesg.log


  2. d命令:删除

    删除此文件中的第10行: $sed '10d' dmesg.txt

    删除此文件中的第10到100行:$ sed '10,100d' dmesg.log

    删除此文件中的第10行到最后一行:$ sed '10,$d' dmesg.log

    删除此文件中的最后一行:$ sed '$d' dmesg.log

    删除指定行以外的任意行:$ sed '5!d' dmesg.log

    删除所有包含Bluetooth的行:$ sed '/Bluetooth/d' dmesg.log

    删除空行:$ sed '/^$/d' dmesg.log


  3. 使用" -i "参数,会直接修改源文件。

  4. 使用" -e "参数,可以跟随多个编辑命令:

    $ sed -e 's/Blue/BLUE/g' -e 's/tooth/TOOTH/g' dmesg.log


  5. y命令:字符转换

    $ sed 'y/USB/123/' dmesg.log

    这里会将U转换成1,S转换成2,B转换成3。


  6. i或a命令:插入文本

    在第二行前插入" hello world ":$ sed '2 i hello\ world' dmesg.log

    在第二行后插入" hello world ":$ sed '2 a hello\ world' dmesg.log

    在匹配的上一行插入" hello world ":sed '/ACPI/i\hello\ world' dmesg.log


  7. r命令:读取文本

    $ echo "hello\ world" >> new

    $ sed '/ACPI/r new' dmesg.log


  8. p命令:打印命令

    $ sed -n 's/ACPI/acpi/p' dmesg.log

    " -n "表示不打印无关行。


  9. w命令:写入文件

    $ sed -n '1,10 w new2' dmesg.log


  10. sed脚本:

    可以把sed命令的参数写在文件里,然后使用" sed -f "调用它。



还有一些更强大的sed命令,就不说了,用到的时候再学。这里都是基础命令。sed十分强大,它以行为单位,是处理文本的利器。


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
DiracFatCat 2018-09-05 12:14
【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展50年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持80m/s的速度。速度和位置每0.1秒测量一次,...
DiracFatCat 2018-08-31 19:32
【博客大赛】卡尔曼滤波学习笔记(10)一个简单的示例
《Kalman Filtering: Theory and Practice Using MATLAB》第三章,看不懂,暂时略过。《Kalman Filtering: Theory and Pract...
DiracFatCat 2018-07-19 15:09
对sed命令的练习
sed是流编辑器。它每次处理一个输入,因此很有效率。官方手册:https://www.gnu.org/software/sed/manual/sed.html学习Linux命令,当然要阅读官方手册,所...
DiracFatCat 2018-06-19 15:10
【博客大赛】卡尔曼滤波学习笔记(八)可观测性和可控制性 ...
可观测性是指,在给定模型的情况下,动力学系统的状态是否由它的输入输出唯一确定。可观测性是系统模型的特征。如果传感器矩阵H是可逆的,则本系统可观测,因为有:如果传感器矩阵H某些时候是不可逆的,则本系统仍...
DiracFatCat 2018-06-19 10:56
【博客大赛】卡尔曼滤波学习笔记(七)Z变换
如果我们仅仅对离散线性系统感兴趣,那么就使用下面这个表达式:如果u是常量,那么可以写成:为了简化表达式,我们可以将上面写成:离散线性时不变系统的Φ求解,可以使用Z变换。(* 由于本人已经忘记了Z变换的...
DiracFatCat 2018-06-19 10:54
【博客大赛】卡尔曼滤波学习笔记(六)拉普拉斯变换
对于线性时变/时不变系统,求解Φ(t)有多种方式,拉普拉斯变换是其中一种。(* 由于本人已经忘记了拉普拉斯变换的内容,因此本节待续。)...
我要评论
0
0
广告
关闭 热点推荐上一条 /1 下一条