使用sed命令替换字符串,无论是小写还是大写

时间:2016-09-08 12:21:15

标签: bash awk sed grep

我使用以下命令替换文本中的字符串:

    grep -rl "abc" A.txt | xargs sed -i 's/abc/efg/g'.

但我也希望将Abc替换为efg。以下命令似乎无效。

    grep -irl "abc" A.txt | xargs sed -i 's/abc/efg/g'

使用-i获取grep是为了找到不区分大小写的行,但在随后的sed命令中,它将不会允许Abc

所以,我的问题是如何sed替换不区分大小写的文本?

2 个答案:

答案 0 :(得分:0)

awk 'BEGIN{IGNORECASE=1} {gsub(/abc/,"efg")}1' A.txt > a.tmp && mv a.tmp A.txt

示例:

 echo -e "abc\nABC\nhey abc" |awk 'BEGIN{IGNORECASE=1} {gsub(/abc/,"efg")}1'
efg
efg
hey efg

答案 1 :(得分:0)

将'我'大写。

grep -irl "abc" do.py | xargs sed -i 's/abc/efg/gI'

或者,使用像这样的其他正则表达式

grep -irl "abc" do.py | xargs sed -i 's/[Aa]bc/efg/g'