Insere uma variável em uma string em um lugar aleatório?

1

Temos uma string com um comprimento de 20 caracteres.

Temos um número aleatório, ex .: 6

Temos uma variável, ex .: $ var="%"

Como podemos inserir uma variável no sexto lugar na string?

Exemplo:

ENTRADA: aaaaaaaaaaaaaaaaaaaa

OUTPUT: aaaaa% aaaaaaaaaaaaaaa

echo INPUT | MAGIC > OUTPUT

    
por pepite 20.12.2016 / 22:36

4 respostas

0

Isso parece fazer o que você deseja:

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

echo ${mystring::$randomnumber}${inject}${mystring:$randomnumber}
    
por 20.12.2016 / 22:46
1

Não com perl , mas sed , se alguém estiver interessado.

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

echo ${INPUT} | sed -e "s/./${var}/${random_number}"
    
por 20.12.2016 / 22:49
1

Desde que você marcou isso com perl :

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

Outra maneira com perl :

echo aaaaaaaaaaaaaaaaaaaa | var=% perl -lpe 'substr $_, 5, 0, $ENV{var}'
    
por 20.12.2016 / 22:41
0

A sua variável $ var a perl que você já tem acesso, ou é uma variável shell?

Para este caso em particular, eu provavelmente preferiria usar substr .

$ echo "123456789" | perl -lpe 'substr $_, 5, 0, "insert"'
12345insert6789
    
por 21.12.2016 / 02:12

Tags