我使用以下命令替换文本中的字符串:
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
替换不区分大小写的文本?
答案 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'