sed 操作命令

时间:2023-03-09 21:55:34
sed 操作命令

sed介绍

grep 只能过滤文件内容,sed既能过滤文件内容同时还能对文件内容进行修改.  sed 算是一种编程语言,它有自己的固定语法.

sed是一种行编辑器,sed会在内存中开辟一块独立的空间(模式空间),每次读取磁盘文件中的一行调入内存空间并且默认自动打印到屏幕

sed基本语法

1. sed  [option]   'script'  file

script : "地址命令addresscmd"

cmd: p   d  a  i   c  w r  =

sed命令实例

1.sed -n '/^root/p' /etc/passwd

sed 操作命令

2.  sed -n '/^root\>/p' /etc/passwd

sed 操作命令

3.   sed   -n   "1~3p"    f1

4.   sed   -n   '2!p"        f1

5.  sed  -r   's/(root)/admin\1/g'      /etc/passwd

6.  sed  -r    's/(.*)/\1edu/'              /etc/passwd

7. sed   -r    's/(.*)/edu\1/'              /etc/passwd

8. sed -r 's*/(bin/bash)$*/s\1*'       /etc/passwd

9.sed -r '/GRUB_CMDLINE_LINUX/s/(.*)"$/\1 XYZ"/' /etc/default/grub 或者 sed -r '/GRUB_CMDLINE_LINUX/s/"$/ xyz"/' /etc/default/grub

10.使用正则表达式表示整行字符同时分割并且取到相应的字符串

正则表达式  (.*inet)(.*)(netmask.*)表示包含ip地址的整行字符串

sed 操作命令

把整行字符串分组分割成三个部分.可以取到任意分组中的字符串.

sed 操作命令

11.删除单行注释符号   找到符号用空来替代

sed    '/^#NameVirtualHost/s/#//'          /etc/httpd/conf/httpd.conf

12.删除多行的注释符号

sed '/^#VirtualHost/,/^<\/VirtualHost/s/#//' /etc/httpd/conf/httpd.conf

/^#VirtualHost/         匹配到的开始行

/^<\/VirtualHost/        匹配到的结束行

对开始行和结束行中的所有行进行操作

13.    echo "/etc/sysconfig/network/" | sed -r 's/(.*\/)([^/]+\/?)/\2/'

echo "/etc/sysconfig/network/" | sed -r 's/(.*\/)([^/]+\/?)/\1/'

sed 操作命令

sed的高级语法

sed 命令包含两个操作空间

1. 模式空间          默认只能包含一行的文本内容   相当于正在处理数据的空间

2. 保持空间          相当于一个小仓库,用来存储暂时在模式空间中没有处理完成的数据.

[root@centos7 boot]# seq 10 | sed -n 'n;p'
   2
   4
   6
   8
   10

sed '1!G;h;$!d'  file  '1!G;  h;   $!d' 相当于通过;号把这个命令分成了3个脚本.sed读取文件的每一行文本内容依次执行这三个脚本命令.

sed 'N;D'  file

[root@centos7 boot]# seq  5 | tac

5

4

3

2

1

倒序内容命令

1. ls *.rpm | rev | cut -d -f2 | rev | sort | uniq -c

tac 把整个文件的行倒叙显示
     rev 按每行字符内容倒叙显示

[root@centos7 ~]# seq 10 | xargs -n2
  1 2
  3 4
  5 6
  7 8
  9 10