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ávelx
. -
-i
inperl
: especifica que os arquivos processados pelo "< >" construções devem ser editadas no local. -
-p
inperl
: 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
inperl
: 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