40

大文字と小文字を区別しない正規表現を照合し、同時に削除するにはどうすればよいですか

大文字と小文字を区別しない一致を取得するには、フラグ「i」を使用することを読みました

sed -e "/pattern/replace/i" filepath

使用を削除するにはd

sed -e "/pattern/d" filepath

2iwのように複数のフラグを組み合わせることができることも読みました

sedがiとdの両方を組み合わせることができるかどうか知りたいのですが、次のことを試しましたが、うまくいきませんでした

sed -e "/pattern/replace/id" filepath > newfilepath
4

3 に答える 3

65

/Iの代わりに大文字と小文字を区別せずに使用し/iます。

sed -e "/pattern/Id" filepath
于 2010-01-28T19:31:53.083 に答える
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

またはシェル(bash)だけで

#!/bin/bash
shopt -s nocasematch
while read -r line
do
    case "$line" in
        *pattern* ) echo $line;
    esac
done <"file"
于 2010-01-29T00:00:24.000 に答える
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
于 2021-03-02T15:58:33.617 に答える