文字列の任意の場所に変数を挿入しますか?

文字列の任意の場所に変数を挿入しますか?

長さが20文字の文字列があります。

たとえば、6のようなランダムな数があります。

たとえば、$ var = "%"などの変数があります。

文字列の6番目の位置に変数を挿入するにはどうすればよいですか?

例:

入力:あああああああああああああああああ

出力:aaaaa%aaaaaaaaaaaaaa

エコ入力|魔法>出力

答え1

にはないが興味のある方がいらっしゃるならperlsed

INPUT="aaaaaaaaaaaaaaaaaaaa"
random_number="6"
var="%"

echo ${INPUT} | sed -e "s/./${var}/${random_number}"

答え2

このコンテンツに以下をタグ付けしたためですperl

echo aaaaaaaaaaaaaaaaaaaa | var=% perl -lpe 's/^.{5}\K/$ENV{var}/e'

別の方法perl

echo aaaaaaaaaaaaaaaaaaaa | var=% perl -lpe 'substr $_, 5, 0, $ENV{var}'

答え3

これはあなたが望むことを行うようです:

mystring="This is a test"
inject="____"
randomnumber=4 # determined to be random by fair die roll

echo ${mystring::$randomnumber}${inject}${mystring:$randomnumber}

答え4

$ varはすでにアクセス可能なPerl変数ですか、それともシェル変数ですか?

この特別なケースではsubstr

$ echo "123456789" | perl -lpe 'substr $_, 5, 0, "insert"'
12345insert6789

関連情報