Substitua a mesma linha no arquivo 1 do arquivo 2 por conditon

0

Arquivo 1:

19a9s
c9019
5777

Arquivo 2:

99a9s
89019
10919

Saída esperada

19a9s
89019
5777

Portanto, em file 1 on line#2 , começa com a letra c . que eu gostaria de usá-lo como condição se a linha começar com a letra c , então eu quero substituí-lo do segundo arquivo que é file 2

Eu tentei o seguinte, mas não consegui dar a saída esperada:

awk '
    NR == FNR{         #for lines in first file
        S[NR] = $0     #put line in array 'S' with row number as index 
        next           #starts script from the beginning
    }
    /^c/{$0=S[FNR]}{             #for line stared with 'c'
        $0=S[++count]  #replace line by corresponded array element
    }
    1                  #alias for 'print $0'
    ' file2 file1
    
por αԋɱҽԃ αмєяιcαη 17.11.2018 / 20:37

2 respostas

1
awk '
    NR == FNR{         #for lines in first file
        S[NR] = $0     #put line in array 'S' with row number as index 
        next           #starts script from the beginning
    }
    /^c/{$0=S[FNR]}{             #for line stared with 'c'
    }
    1                  #alias for 'print $0'
    ' file2 file1
    
por 17.11.2018 / 21:09
0

Quão longe

paste file[12] | sed 's/^c[^   ]*      //; t; s/       .*$//;'
19a9s
89019
5777

você?

    
por 17.11.2018 / 23:24