如何匹配不区分大小写的正则表达式并同时将其删除
我读到要获得不区分大小写的匹配项,请使用标记“i”
sed -e "/pattern/replace/i" filepath
并删除使用d
sed -e "/pattern/d" filepath
我还读到我可以组合多个标志,如2iw
我想知道sed是否可以将i和d结合起来 我尝试过以下但是没有用
sed -e "/pattern/replace/id" filepath > newfilepath
答案 0 :(得分:48)
对于不区分大小写的使用/I
而不是/i
。
sed -e "/pattern/Id" filepath
答案 1 :(得分:1)
你也可以使用(g)awk。
# print case insensitive
awk 'BEGIN{IGNORECASE=1}/pattern/{print}' file
# replace with case insensitive
awk 'BEGIN{IGNORECASE=1}/pattern/{gsub(/pattern/,"replacement")}1' file
或者只是shell(bash)
#!/bin/bash
shopt -s nocasematch
while read -r line
do
case "$line" in
*pattern* ) echo $line;
esac
done <"file"
答案 2 :(得分:0)
我制作这个单行是因为 Ansible 无法处理同名的不同 lv。这将接近 CSV 转换为完美的 JSON。可能您想更改 -F
标志以更改字段分隔符。
lvs | perl -ane '
local %tmp,$i=0;
while($i<@f){
$tmp{$f[$i]}=$F[$i] if $F[$i];
$i++
};
if(@f){push @ans,\%tmp}
else{ @f=@F };
END { print to_json(\@ans,{pretty=>1}) }
' -MJSON