$ 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
— порядковый номер текущей записи в текущем файле («номер строки в текущем файле» ). Если их два или четыре, мы перебираем все поля (от 1 до NF
, количество полей )и устанавливаем для каждого поля строку N/A
. Замыкание 1
в конце является кратким способом записи { print }
и приведет к печати всех строк (, измененных или не измененных ).
Если у вас есть дополнительный файл со всеми номерами строк, которые следует удалить (по одному номеру в строке):
awk -F, -vOFS=, 'FNR==NR { a[$1]; next }
FNR in a { for (i=1;i<=NF;++i) $i="N/A" } 1' lines file
Где lines
— файл с номерами строк.
Здесь, если FNR==NR
, то мы читаем из первого файла (файл lines
). В этом случае мы создаем запись в массиве a
с номером строки в качестве ключа и продолжаем со следующей строки. NR
— это общее число прочитанных на данный момент строк, и оно будет равно FNR
, пока мы не начнем чтение со второго файла.
Если FNR
не равно NR
, то мы читаем второй файл (файл file
, содержащий данные ). Затем мы проверяем, является ли текущий номер строки ключом в массиве a
, и если это так, мы заменяем все поля, как и раньше, на N/A
.