linux sed查询与替换

sed查询某个时间段的内容

主要参数:

  • -e:执行命令行中的指令,例如:sed -e 'command' file(s)
  • -f:执行一个 sed 脚本文件中的指令,例如: sed -f scriptfile file(s)
  • -i:与-e的区别在于:当使用-e 时,sed 执行指令并不会修改原输入文件的内容,只会显示在 bash 中,而使用-i 选项时,sed 执行的指令会直接修改原输入文件。
  • -n:读取下一行到 pattern space。

sed  -n  '/2018-05-23 18:10/,/2018-05-23 18:11/p'  log_info.log 


替换案例:

Sed 可替换文件中的字串、资料行、甚至资料区。其中,表示替换字串的指令中的函数参数为s;表示替换资料行、或资料区>的指令中的函数参数为c。上述情况以下面三个例子说明。

行的替换
sed -e '1c/#!/bin/more' file (把第一行替换成#!/bin/more)
思考:把第 n 行替换成 just do it
sed -e 'nc/just do it' file
sed -e '1,10c/I can do it' file (把 1 到 10 行替换成一行: I can do it)
思考:换成两行(I can do it! Let's start)
sed -e '1,10c/I can do it!/nLet'"/'"'s start' file
字符的替换
$ sed 's/test/mytest/g' example-----在整行范围内把 test 替换为 mytest。如果没有 g 标记,则只有每行第一个匹配的 test 被替换成 mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)选项和 p 标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的 test 被替换成 mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以 192.168.0.1 开头的行都会被替换成它自已加 localhost,变成 192.168.0.1localhost。
$ sed -n 's/loveable/\1rs/p' example-----love 被标记为 1,所有 loveable 会被替换成 lovers,而且替换的行会被打印出来。
$ sed 's#10#100#g' example-----不论什么字符,紧跟着 s 命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有 10 替换成 100。



替换与查找

在 s 命令里以 g 结尾表示的是:全局性,意即“替代文本取代正则表达式中每一个匹配的”。如果没有设置 gsed 指挥取代第一个匹配的。

鲜为人知的是:可以在结尾指定数字,只是第 n 个匹配出现才要被取代:
sed ‘s/Tom/Lisy/2’ < Test.txt 仅匹配第二个 Tom
通过给 sed 增加一个-e 选项的方式能让 sed 接受多个命令。
sed -e ‘s/foo/bar/g’ -e ‘s/chicken/cow/g’ myfile.txt 1>myfile2.txt
用 shell 命令将 test.log 文件中第 3-5 行的第 2 个“filter”替换成“haha”
sed -i '3,5s/filter/haha/2' test.log


  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值