複数のファイルにソースコードが分散されています。
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文字の大文字と小文字にのみ影響を与えるように変更してください。AbCdEf
PqRsTuVwX
&
(代替が必要な場合(たとえば、foo
forfoo
またはbcd
forの交換abcd
など)、必要に応じて機能しないか、無限ループに陥ることがあります。