HarmonyHu 多思不如养志,多言不如守静,多才不如蓄德

Sed的使用

2017-04-12

选项说明

-n : 使用安静模式,只有被处理的行才会显示出来,通常与p一起用

-i : 将修改回写到文件中

-r : 支持扩展的正则表达式,使用正则时最好带上,并且对表达式用’’

匹配操作

sed -n /world/p test.txt : 显示包含world的行
sed -n '2,/world/p' test.txt : 显示从第2行到第一个出现world的中间行

替换操作

sed s/h/H/ test.txt : 将每行第一个h改成H
sed s/h/H/1 test.txt : 将每行第一个h改成H
sed s/h/H/2 test.txt : 将每行第二个h改成H
sed s/h/H/g test.txt : 将每行的所有h改成H
sed 1s/h/H/ test.txt : 将第一行第一个h改成H
sed -i s/h/H/ test.txt : 将修改写入到源文件
sed -n s/h/H/p test.txt : 只打印替换后的行

删除操作

sed /world/d test.txt:删除匹配world的行
sed /^$/d test.txt:删除空行
sed '1d' test.txt:删除第一行
sed '1,/^$/d' test.txt:删除第一行到空行
sed '2,5d' test.txt:删除2到5行
sed '2,$d' test.txt:删除2到最后一行

举例

  1. 打印linux的名称

    $ sed -n s/^NAME=//p /etc/os-release 
    "Ubuntu"
    $ sed -r -n 's/^NAME="?([^"]+)"?/\1/p' /etc/os-release 
    Ubuntu
    

    其中/etc/os-release内容如下:

    $ cat /etc/os-release 
    NAME="Ubuntu"
    VERSION="16.04.5 LTS (Xenial Xerus)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 16.04.5 LTS"
    VERSION_ID="16.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    VERSION_CODENAME=xenial
    UBUNTU_CODENAME=xenial
    

Similar Posts

上一篇 MySql命令整理

Content