首页 > 系统服务 > 详细

linux sed命令

时间:2020-02-28 23:52:47      阅读:113      评论:0      收藏:0      [点我收藏+]

引用链接1
引用链接2

sed元字符集

^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
匹配0个或多个字符,如:/sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
(..) 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/&/,love这成love
< 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
> 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

在行前增加一行数据

nl /etc/passwd | sed ‘2a drink tea‘
nl /etc/passwd | sed ‘2i drink tea‘

直接修改文件

  • sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

实例

  • 将原文件中的 “20190413”的日期格式改成 “2019-04-13 12:00:00”的时间格式:
[root@hangzhoujfzx dyzy]# cat tmp
"xietiandao",34,"Anhui Province",20190323,45899.3,ok
"jinyi",31,"Zhejiang Proveince",20200123,34.23,yes
"xiezixin",5,"Zhejiang Province",20200321,467.34,no

[root@hangzhoujfzx dyzy]# sed 's/,\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\),/,"\1\2\3\4-\5\6-\7\8 12:00:00",/' tmp
"xietiandao",34,"Anhui Province","2019-03-23 12:00:00",45899.3,ok
"jinyi",31,"Zhejiang Proveince","2020-01-23 12:00:00",34.23,yes
"xiezixin",5,"Zhejiang Province","2020-03-21 12:00:00",467.34,no

sed -i 's/,\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\),/,"\1\2\3\4-\5\6-\7\8 12:00:00",/' tmp
  • -i 是修改源文件。

linux sed命令

原文:https://www.cnblogs.com/dyzy480/p/12380330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!