$ awk -F, -vOFS=, 'FNR==2 || FNR==4 { for (i=1;i<=NF;++i) $i="N/A" } 1' file
RS,RPHG,LPHG,RITC
N/A,N/A,N/A,N/A
-12.5663095454547,-33.8395547159089,-3.44606818181819,-24.8157817329538
N/A,N/A,N/A,N/A
-29.9357495454533,-34.5783047159075,-50.3323381818191,2.0808182670462
FNR
é o número ordinal do registro atual no arquivo atual ("o número da linha no arquivo atual"). Se for dois ou quatro, percorremos todos os campos (de 1 a NF
, o número de campos) e definimos cada campo para a string N/A
. O trailing 1
no final é uma maneira curta de escrever { print }
e fará com que todas as linhas (modificadas ou não) sejam impressas.
Se você tiver um arquivo adicional com todo o número de linha que deve ser removido (um número por linha):
awk -F, -vOFS=, 'FNR==NR { a[$1]; next }
FNR in a { for (i=1;i<=NF;++i) $i="N/A" } 1' lines file
Em que lines
é o arquivo com números de linha.
Aqui, se FNR==NR
estiver lendo o arquivo primeiro (o arquivo lines
). Nesse caso, criamos uma entrada na matriz a
com o número da linha como chave e continuamos com a próxima linha. NR
é o número total de linhas lidas até agora, e será igual a FNR
até começarmos a ler o segundo arquivo.
Se FNR
não for igual a NR
, então estamos lendo o arquivo segundo (o arquivo file
, contendo os dados). Em seguida, testamos se o número da linha atual é uma chave na matriz a
e, se for, substituiremos todos os campos como antes por N/A
.