変数内の任意の場所に変数を挿入するには?

変数内の任意の場所に変数を挿入するには?

尋ねる:本当に任意の場所に変数$bを変数$aに挿入するには?

INPUT変数の内容の例:

$ echo $a
árvíztűrő tükörfúrógép
$ echo $b
ZZ

出力

$ ./somemagicscript.sh
árvíztűrő tüköZZrfúrógép
$ ./somemagicscript.sh
árvíztűrő tükörfúrZZógép
$ ./somemagicscript.sh
árvíztűrZZő tükörfúrógép
$ ./somemagicscript.sh
árvíztűrő tZZükörfúrógép

修正する:OpenBSDでは、挿入された変数の横に「�」文字が置かれるため、現在の答えは完璧ではありません。 :\

おそらく、挿入された変数がマルチバイト文字に直接隣接している場合よりもそうです。

ベストアンサー1

sed "s/.\{$(($RANDOM%${#a}))\}/&$b/" <<< $a

どこ:

  • $RANDOM0から$RAND_MAX(通常0x7fff==32767)
  • ${#a}ターゲット文字列の長さ
  • $((...%...))除算の残りを出力
  • .{n}入力文字列の最初のn文字と一致します。
  • s/.../&$b/パターンマッチ自体を交換+$b

おすすめ記事