Sed的使用
选项说明
-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到最后一行
正则匹配
[[:digit:]]:匹配数字[0-9]:匹配数字[^0-9]:匹配非数字
举例
-
打印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