原创 sed命令--学习笔记

2017-7-11 16:26 1058 12 12 分类: 软件与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十分强大,它以行为单位,是处理文本的利器。


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条