$ gawk -i inplace '
NR == FNR {repl[FNR] = $0; next}
FNR == 1 {filenum++}
FNR == 3 {$0 = repl[filenum]}
{print}
' Input1 Input{2,3,4}.file
$ cat Input2.file
library(data.table)
library(dplyr)
file.list <- list("a","b","c","d")
$ cat Input3.file
library(data.table)
library(dplyr)
file.list <- list("d","e","f","g")
$ cat Input4.file
library(data.table)
library(dplyr)
file.list <- list("h","i","l","m")
Olhando para o seu código:
- você está substituindo a linha 3 em cada * .file com cada linha de Input1. Você ficará com a última linha do Input1 como linha 3 para cada arquivo *.
-
$p
não pode ser expandido em seu script awk, porque está entre aspas simples.
Tente isto:
exec 3<Input1 # set up file descriptor 3 to read from Input1 file
for f in *.file; do
read -r -u 3 replacement # read a line from fd 3
awk -v rep="$replacement" '{if (NR == 3) print rep; else print $0}' "$f" > "$f.test"
done
exec 3<&- # close fd 3