escrevendo a partir de um certo número de linha com loop

0
echo -n "which names (lower case only)?"
read name

vamos supor que as entradas sejam: brmu ankr ista

Eu preciso escrever linhas específicas após as 20 linhas no arquivo de texto w.r.t. entradas do usuário com um espaço desde o início da linha da seguinte forma:

brmu_gps expt ftprnx
ankr_gps expt ftprnx
ista_gps expt ftprnx
    
por deepblue_86 24.11.2015 / 20:31

1 resposta

3

Usando o Perl:

<<<"$x" perl -i -pe 'if($.==21){foreach(split(" ",<STDIN>)){print"${_}_gps expt ftprnx\n"}}' file

Script Perl expandido:

if($. == 21) { # if the current line's number is 21
    foreach(split(" ", <STDIN>)) { # splits STDIN on spaces and returns the splitted elements as an array; for each member of the array
        print("${_}_gps expt ftprnx\n") # print the current element followed by '_gps expt ftprnx' and a newline character
    }
}
  • <<<"$x" : lê a entrada de uma variável x .
  • -i in perl : especifica que os arquivos processados pelo "< >" construções devem ser editadas no local.
  • -p in perl : faz com que o Perl assuma o seguinte loop em torno do seu programa, o que faz com que seja iterado sobre argumentos de nome de arquivo como sed:

           LINE:
             while (<>) {
                 ...             # your program goes here
             } continue {
                 print or die "-p destination: $!\n";
             }
    
  • -e in perl : pode ser usado para inserir uma linha de programa.
% cat file
line #1
line #2
line #3
line #4
line #5
line #6
line #7
line #8
line #9
line #10
line #11
line #12
line #13
line #14
line #15
line #16
line #17
line #18
line #19
line #20
line #21
line #22
line #23
line #24
line #25
% read x
brmu ankr ista
% <<<"$x" perl -i -pe 'if($.==21){foreach(split(" ",<STDIN>)){print"${_}_gps expt ftprnx\n"}}' file
% cat file
line #1
line #2
line #3
line #4
line #5
line #6
line #7
line #8
line #9
line #10
line #11
line #12
line #13
line #14
line #15
line #16
line #17
line #18
line #19
line #20
brmu_gps expt ftprnx
ankr_gps expt ftprnx
ista_gps expt ftprnx
line #21
line #22
line #23
line #24
line #25
    
por kos 24.11.2015 / 21:11