sed命令详解
发布时间:2020-12-14 00:13:54 所属栏目:Linux 来源:网络整理
导读:Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... [OPTION] -n 不输出模式空间内容到屏幕,即不自动打印 -e 多点编辑 -f /PATH/SCRIPT_FILE。从指定文件中读取编辑脚本 -r 支持使用扩展正则表达式 -i.bak 备份文件并原处编辑 {scri
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
[OPTION]
{script-only-if-no-other-script} 地址定界 1.不给地址:对全文进行处理 2.单地址: #:指定的行 , $:最后一行 /pattern/:被此处模式所能够匹配到的每一行 3.地址范围 #,# #,+# /pat1/,/pat2/ #,/pat1/ 4. ~:步进 1~2 奇数行 2~2 偶数行 编辑命令 d:删除模式空间匹配的行,并立即启用下一轮循环 p:打印当前模式空间内容,追加到默认输出之后 a[]text:在指定行后面追加文本,支持使用n实现多行追加 i[]text:在行前插入文本 c[]text:替换行为单行或多行文件 w /path/somefile:保存模式匹配的行至指定文件 r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后 =:为模式空间中的行打印行号 !:模式空间中匹配行取反处理 高级编辑命令 P:打印模式空间开端至n内容,并追加到默认输出之前 h:把模式空间中的内容覆盖至保持空间中 H:把模式空间中的内容追加至保持空间中 g:从保持空间取出数据覆盖至模式空间 G:从保持空间取出数据追加至模式空间 x:把模式空间中的内容与保持空间中的内容进行交换 n:读取匹配到的行的下一行覆盖至模式空间 N:读取匹配到的行的下一行追加至模式空间 d:删除模式空间中的行 D:如果模式空间包含换行符,则删除知道第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发 出d命令那样启动正常的新循环 例题 [[email?protected] ~]# sed -r "/^[[:space:]]*$/d" /etc/grub2.cfg 2.删除/etc/fstab文件中不以#开头,后面至少跟一个空白字符的行的行首的和空白字符 [[email?protected] ~]# sed -r "/^# *|^$/d" /etc/fstab 3.在/etc/fstab文件中不以#开头的行的行首增加#号 [[email?protected] ~]# sed -r -n "/^[^#]/s/(.*)/#1/p" /etc/fstab 4.处理/etc/fstab路径使用sed命令取出其目录和基名 [[email?protected] ~]# echo /etc/fstab | sed -r "[email?protected](.*/)(.*$)@[email?protected]" 5.利用sed取出ifconfig命令中本机的IPv4地址 [[email?protected] ~]# ifconfig eth0 | sed -r -n "s/.*inet (.*) net.*/1/p" 6.统计centos安装光盘中Package目录下的所有rpm文件的以. 分割倒数第二个字段的重复次数 [[email?protected] ~]# mount /dev/cdrom /opt/dvd [[email?protected] ~]# ls /opt/dvd/Packages/ | sed -r "s/.rpm$//" | sed -r "s/.*.(.*)/1/" | sort | uniq -c [[email?protected] ~]# ls /opt/dvd/Packages/ | sed -r "s/.*.(.*).rpm/1/" | sort | uniq -c 7.将文本文件的n和n+1行合并为一行,n为奇数行 [[email?protected] ~]# seq 10|xargs -n2 [[email?protected] ~]# seq 10|sed ‘N;s/n/ /‘ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |