sed 操作命令
Posted 不懂123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
2. sed -n \'/^root\\>/p\' /etc/passwd
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地址的整行字符串
把整行字符串分组分割成三个部分.可以取到任意分组中的字符串.
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 命令包含两个操作空间
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
以上是关于sed 操作命令的主要内容,如果未能解决你的问题,请参考以下文章