大文字と小文字の一致パターンを置き換えるためのsedの使用

大文字と小文字の一致パターンを置き換えるためのsedの使用

複数のファイルにソースコードが分散されています。

  • abcdefに置き換える必要があるパターンがありますpqrstuvxyz
  • パターンはAbcdef(Sentence Case)とすることができ、次に置き換える必要がありますPqrstuvxyz
  • パターンはAbCdEf(Toggle Case)ですPqRsTuVxYz

つまり、ソースパターンの大文字と小文字を一致させ、それに合ったターゲットパターンを適用する必要があります。

sedこれを達成するために他のツールをどのように使用できますか?

ベストアンサー1

ポータブルソリューションの用途sed

sed '
:1
/[aA][bB][cC][dD][eE][fF]/!b
s//\
&\
pqrstu\
PQRSTU\
/;:2
s/\n[[:lower:]]\(.*\n\)\(.\)\(.*\n\).\(.*\n\)/\2\
\1\3\4/;s/\n[^[:lower:]]\(.*\n\).\(.*\n\)\(.\)\(.*\n\)/\3\
\1\2\4/;t2
s/\n.*\n//;b1'

GNU sedを使用する方が簡単です。

search=abcdef replace=pqrstuvwx
sed -r ":1;/$search/I!b;s//\n&&&\n$replace\n/;:2
    s/\n[[:lower:]](.*\n)(.)(.*\n)/\l\2\n\1\3/
    s/\n[^[:lower:]](.*\n)(.)(.*\n)/\u\2\n\1\3/;t2
    s/\n.*\n(.*)\n/\1/g;b1"

上記の使用法は、残りの&&&置換で文字列の大文字と小文字のパターンを再利用するため、銀とにABcdef変更されますPQrstuVWx。最初の6文字の大文字と小文字にのみ影響を与えるように変更してください。AbCdEfPqRsTuVwX&

(代替が必要な場合(たとえば、fooforfooまたはbcdforの交換abcdなど)、必要に応じて機能しないか、無限ループに陥ることがあります。

おすすめ記事