文本处理三剑客之sed命令用法-创新互联
1.sed简介
创新互联公司专注于子长企业网站建设,成都响应式网站建设,商城系统网站开发。子长网站建设公司,为子长等地区提供建站服务。全流程定制网站,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务sed是一个面向字符流的“非交互式”编辑器,vim编译中手工对文本的操作动作大部分都可以通过sed命令来完成,这样就方便在linux下编译程序批量自动处理文件,例如分析日志文件,修改配置文件等等。
2.sed命令用法
用法:
sed [OPTION]...'script'[input-file]
常用选项:
-n :不输出模式空间中的内容至屏幕
-e script, --expression=script: 多点编辑
~]# sed -e 's@^UUID.*@@g' -e '/^[[:space:]]*$/d' /etc/fstab
-f script-file, --file=script-file 每行一个编辑命令
-r, --regexp-extended :支持使用扩展的正则表达式
-i[SUFFIX], --in-place[=SUFFIX] :直接编辑源文件
此操作有风险,请慎用!!!
script:地址定界
(1)空地址:对全文进行处理
(2)单地址:
#:指定行
/pattern/ :被此模式所匹配到的每一行
(3)地址范围:
#,#:从#到#的行
#,+#:
#,/pat1/
/pat1/,/pat2/
$ :最后一行
(4)步进: ~
1~2 :所有奇数行
2~2 :所有偶数行
编辑命令:
d :删除模式空间中的内容
p :显示模式空间中的内容
a \text :在行后面追加文本"text",支持使用\n实现多行追加
i \text :在行前面插入文本"text",支持使用\n实现多行追加
c \text :把匹配到的行替换为此处指定的文本"test"
w /PATH/TO/SOMEFILE :保存模式空间匹配到的行到指定的文件中
= :为模式匹配到的行打印行号
! :条件取反
格式: 地址定界!编辑命令
r \PATH/TO/SOMEFILE :读取指定文件的内容至当前文件被模式匹配到的行后面,一般用于文件合并
s/// :查找替换,其分隔符可自行指定,常用的有s@@@,s###等
替换标记:
g :全局替换
p :显示替换成功的行
w /PATH/TO/SOMEFILE :将替换成功的结果保存至指定文件中
用法示例:
1.在/etc/fstab文件中UUID的行前面加上注释信息
~]# sed '/^UUID/i \this is UUID' /etc/fstab
2.删除某文件的所有空红
~]# sed '/^$/d' FILE
3.删除/boot/grub2/grub.cfg文件中所有以空白字符开头的行的行首的所有空白字符
~]# sed 's@^[[:space:]]\+@@g' grub.cfg
4.在/etc/fstab文件的行尾追加信息
~]# sed '$a \sed command end' /etc/fstab
3.高级编辑命令
h : 把模式空间中的内容覆盖至保持空间中
H :把模式空间中的内容追加至保持空间中
g : 把保持空间中的内容覆盖至模式空间中
G : 把保持空间中的内容追加至模式空间中
x : 把模式空间中的内容与保持空间中互换
n : 覆盖读取匹配到的行的下一行至模式空间中
N : 追加读取匹配到的行的下一行至模式空间中
d : 删除模式空间中的行
D :删除多行模式空间中的所有行
用法示例:
~]# sed -n 'n;p' FILE :显示偶数行,";"用来分隔多个命令 ~]# sed '1!G;h;$!d' FILE :逆序显示文件的内容 ~]# sed '!$d' FILE : 取出最后一行 ~]# sed '$!N;$!D' FILE : 取出文件后两行 ~]# sed '/^$/d;G' FILE : 删除原有的所有的空白行,而后为所有的非空白行后添加一个空白行 ~]# sed 'n;d' FILE :显示奇数行 ~]# sed 'G' FILE :在原有的每行后方添加一个空白行
4.实战训练
实现每周备份一次一周内被修改过的/etc/目录下的所有文件
~]# vim /backups/bf.sh #!/bin/bash # # dir=etc-`date +%F-%H-%M-%S` mkdir -p /backups/$dir for file in `find /etc/* -mtime -7`;do cp -r $file /backups/$dir &> /dev/null done cd /backups && tar -Jcf ${dir}.tar.xz $dir && rm -rf /backups/$dir ~]# crontab -e 0 0 * * 1 /bin/bash /backups/bf.sh
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:文本处理三剑客之sed命令用法-创新互联
本文来源:http://scyanting.com/article/jscgp.html