如何匹配不区分大小写的正则表达式并同时删除它
我读到要获得不区分大小写的匹配,请使用标志“i”
sed -e "/pattern/replace/i" filepath
并删除使用 d
sed -e "/pattern/d" filepath
我还读到我可以组合多个标志,如 2iw
我想知道 sed 是否可以同时结合 i 和 d 我尝试了以下方法,但没有成功
sed -e "/pattern/replace/id" filepath > newfilepath
如何匹配不区分大小写的正则表达式并同时删除它
我读到要获得不区分大小写的匹配,请使用标志“i”
sed -e "/pattern/replace/i" filepath
并删除使用 d
sed -e "/pattern/d" filepath
我还读到我可以组合多个标志,如 2iw
我想知道 sed 是否可以同时结合 i 和 d 我尝试了以下方法,但没有成功
sed -e "/pattern/replace/id" filepath > newfilepath
对于不区分大小写的使用/I
,而不是/i
.
sed -e "/pattern/Id" filepath
您也可以使用 (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
或仅使用外壳(bash)
#!/bin/bash
shopt -s nocasematch
while read -r line
do
case "$line" in
*pattern* ) echo $line;
esac
done <"file"
我制作了这个单行代码,因为 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