Altere a string no arquivo do terminal [closed]

1

Então eu tenho essa string

mumbleserver_username: "BOT",

e eu quero mudar o BOT para algo aleatório sem lembrar o que foi antes, então não encontre e substitua.

Alguém pode me ajudar?

    
por iFEAR 15.08.2016 / 22:20

1 resposta

0

Embora seja quase possível hackear algo ao extrair bytes imprimíveis de /dev/random (ou /dev/urandom ), perl parece fornecer pelo menos um módulo que faz exatamente o que você deseja:

NAME

String::Random - Perl module to generate random strings based on a pattern

O módulo é fornecido no Ubuntu pelo pacote libstring-random-perl , que você pode instalar através do seu gerenciador de pacotes preferido, ou a partir da linha de comando usando sudo apt install libstring-random-perl ou sudo apt-get install libstring-random-perl .

Com base nos exemplos da página CPAN - String :: Random , você poderia então fazer algo como:

perl -MString::Random=random_string -pe '
  s/\".*\"/sprintf "\"%s\"", random_string("CccnCccn")/e if /mumbleserver_username:/
' yourfile

para substituir cadeias entre aspas duplas literais \".*\" nas linhas correspondentes a mumbleserver_username: por sequências aleatórias de 8 caracteres que consistem em uma combinação predefinida de letras maiúsculas C , letras minúsculas c e dígitos n .

Teste:

$ cat file.txt

mumbleserver_username: "BOT",
mumbleserver_username: "foobar",
mumbleserver_username: "NOT",

então

$ perl -MString::Random=random_string -pe '
    s/\".*\"/sprintf "\"%s\"", random_string("CccnCccn")/e if /mumbleserver_username:/
  ' file.txt

mumbleserver_username: "Wzk1Ihr2",
mumbleserver_username: "Los8Nuz7",
mumbleserver_username: "Sdf8Qmd9",

Para transformar o one-liner em um script, você pode usar o truque -MO=Deparse descrito aqui: Como posso converter one-liners do Perl? em scripts completos? depois cole sua saída em um arquivo, junto com uma linha 'shebang' apropriada como

#!/usr/bin/perl

use String::Random (split(/,/, 'random_string', 0));
LINE: while (defined($_ = <ARGV>)) {
    s/\".*\"/sprintf '"%s"', random_string('CccnCccn');/e if /mumbleserver_username:/;
}
continue {
    die "-p destination: $!\n" unless print $_;
}

Torne-o executável

chmod +x myscript.pl

e depois você pode usá-lo como

./myscript.pl yourfile
    
por steeldriver 16.08.2016 / 01:34