Se tiver certeza de que o número de linhas em file2.txt
é maior que o número de vezes quebaby
aparece, um script simples pode ser usado:
awk 'BEGIN{ sf="file2.txt"}
/baby/ { getline var <sf; gsub(/baby/,var,$0) }
print
' file1.txt
Mas um script muito mais robusto que ambos verificam se a leitura de file2.txt
obteve algum erro ou retrocesso no início, se o script chegar ao final do arquivo2.txt:
awk 'BEGIN{ sf="file2.txt"}
/baby/{
# If at the end of second file, rewind to start.
while( (test=(getline var <sf)) != 1 ){
if( test==-1 ){ print "Error: file ",sf,":",ERRNO; exit 1 }
if( test==0 ){ close(sf); continue }
# This script should never get up to here
print "Unexpected error"; exit 2
}
sub(/baby/,var ,$0)
}
1
' file1.txt
Se file2.txt contiver apenas quatro linhas D1, D2, D3, D4, você receberá:
$ ./script
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D1
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D2
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D3
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D4
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D1
I love watermelon