Como alterar o conteúdo do texto do arquivo apenas com os comandos do Shell Script?

0

Em um arquivo, há:

sd5_crypt UUID=1337 none luks,discard

Eu gostaria de mudar para:

sd5_crypt UUID=1337 /dev/disk/by-label/MON_LABEL_ICI:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev

com um script da Shell.

Eu não sei (cego) se é sd5, sd4 ou sx999 ... Eu não conheço o UUID.

Eu tenho que mudar tudo o que é depois de 1337. Bem, disse humanamente "eu apago tudo depois do número UUID - eu não sei - e substituo por /dev/dis/by-label.... que eu conheço.

Eu não sei qual é a boa solução. Você pode ajudar por favor?

    
por 3pic 20.08.2015 / 15:23

1 resposta

2

Versão expandida do meu comentário:

Você pode usar sed para editar seu arquivo. Em geral você precisa:

sed 's/STRING/REPLACEMENT/g'

No seu exemplo, o código a seguir deve funcionar para você:

Com explicação:

sed -i                # the -i option allows you to read from and write to the same file
's/none luks,discard/ # the part you want to replace
\/dev\/disk\/by-label\/MON_LABEL_ICI:\/keyfile luks,keyscript=\/lib\/cryptsetup\/scripts\/passdev/g'
                     # the part you want to insert. Note, that the / characters
                     # have to be escaped with \/
 input.txt           # your input file

como one-liner sem comentários para copiar e colar:

sed -i 's/none luks,discard/\/dev\/disk\/by-label\/MON_LABEL_ICI:\/keyfile luks,keyscript=\/lib\/cryptsetup\/scripts\/passdev/g' input.txt
    
por Wayne_Yux 20.08.2015 / 16:02