ファイルから動的パターンを検索し、それを変数に置き換えます。

ファイルから動的パターンを検索し、それを変数に置き換えます。

3つの異なるスクランブル値を生成する次のコマンドを作成しました。

 A=`echo 'abcdefghijklmnopqrstuvwxyz' | sed 's/./&\n/g' | shuf | tr -d "\n"`
        B=`echo 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | sed 's/./&\n/g' | shuf | tr -d "\n"`
        C=`echo '123456789' | sed 's/./&\n/g' | shuf | tr -d "\n"`

$ echo $A$B$C
zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA729314856

$ echo $C
729314856

$ echo $A$B
zvjmaqwxgchylentifdoprkubsUFTCQEMZKVOLBWYJRPSDHIGXNA

1つは英数字、1つは数字、1つは文字です。

次のスキーマを持つpackage.sqlファイルもあります。

grep TRANSLATE package.sql
         RETURN TRANSLATE(p1_value,'0123456789', '0875642139');
         RETURN TRANSLATE(p2_value,'0123456789', '0875642139');
         RETURN TRANSLATE(p3_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg');
         RETURN TRANSLATE(p4_value,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139');

上記の出力で簡単に参照することは、TRANSALTE行の最初の部分をそのまま維持する必要があることです。 (つまり)()の後の(一重引用符)値はp*_value静的であるため、変更しないでくださいが、静的値の後の(一重引用符)値はTRANSLATE行のすべての項目で動的です。毎回取得する任意の値を使用して、$A$B$C、$A$B、または$Cの出力を使用して動的部分を変更する必要があります。

package.sqlファイルでこの値を置き換える必要があります。

ベストアンサー1

この値が実際に英数字であり、これらの文字列が発生した場合みんなファイルでこれを置き換えると機能します(テストされていません)。

sed -i -e "s/0875642139/${C}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg/${A}${B}/;s/ZYXWVUFEDCBATSRQPONMLKJIHGzyxwvufedcbatsrqponmlkjihg0875642139/${A}${B}${C}/" package.sql

おすすめ記事