sed Case不敏感搜索匹配

时间:2016-08-27 06:29:39

标签: bash sed case-insensitive

我正在尝试使用SED从两个单词中提取文本,例如“帐户”和“已识别”,我希望搜索不区分大小写。所以我尝试使用I参数,但收到此错误消息:

OPTIONS

3 个答案:

答案 0 :(得分:0)

使用:

sed -n "/Account/,/Recognized/Ip"

即。将订单更改为:Ip而不是pI

答案 1 :(得分:0)

避免使用useless use of cat

/pattern/I是如何在sed

中指定不区分大小写的匹配
sed -n "/Account/I,/Recognized/Ip" Security.txt | sed -e '1d' -e '$d'

您可以使用单sed命令来实现相同的目标:

sed -n '/account/I,/recognized/I{/account/I!{/recognized/I!p}}' Security.txt

awk

awk 'BEGIN{IGNORECASE=1} /account/{f=1; next} /recognized/{f=0} f' Security.txt

<强>参考:

答案 2 :(得分:0)

您有useless use of cat,您应该将文件直接提供给sed。下面可能是一种方法。

$ cat file.txt 
Some stuff Account sllslsljjs Security.
Another stuff account name and ffss security.
$ sed -nE 's/^.*account[[:blank:]]*(.*)[[:blank:]]*security.*$/\1/pI' file.txt
sllslsljjs 
name and ffss 

[[:blank:]]*是贪婪的,会删除所需文本前后的空格。 -E选项允许使用扩展正则表达式。