행의 모든 ​​값을 N/A로 대체

행의 모든 ​​값을 N/A로 대체

행의 모든 ​​값을 N/A로 변경하는 방법을 알아보려고 합니다. 예를 들어. 모든 열에서 행 77 132 140 142 155 156 157 및 175를 N/A로 바꿔야 합니다. 예를 들어:

RS,RPHG,LPHG,RITC
13.7801604545457,3.10785528409178,-38.443658181819,-8.25890473295385
-12.5663095454547,-33.8395547159089,-3.44606818181819,-24.8157817329538
35.1140204545463,-35.4853647159089,-33.8231881818192,26.6855902670459
-29.9357495454533,-34.5783047159075,-50.3323381818191,2.0808182670462

답변1

$ 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현재 파일에 있는 현재 레코드의 일련 번호입니다("현재 파일의 줄 번호"). 2개 또는 4개인 경우 모든 필드(1부터 NF필드 수 까지)를 반복하고 각 필드를 string 으로 설정합니다 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.

답변2

한 가지 방법은 다음과 같습니다 sed.

sed '
77c\
N/A,N/A,N/A,N/A
132c\
N/A,N/A,N/A,N/A
140c\
N/A,N/A,N/A,N/A
142c\
N/A,N/A,N/A,N/A
155c\
N/A,N/A,N/A,N/A
156c\
N/A,N/A,N/A,N/A
157c\
N/A,N/A,N/A,N/A
175c\
N/A,N/A,N/A,N/A
' input.csv

답변3

두 줄의 필터링을 사용하여 awk시연합니다 .

awk 'BEGIN { FS=","; OFS="," } { if( NR == 77 || NR == 132 ) {for( i=1; i<=NF; i++) {$NF="N/A"} }; print }' input

if모든 관련 행에 대해 명령문에 더 많은 옵션을 추가하기만 하면 됩니다.

답변4

사용 awk:

awk -vOFS=, '{
  if (NR==77 || NR=132 || NR==140 || NR==142 || NR==155 || NR==156 || NR==157 || NR==175)
    $1=$2=$3=$4="N/A"
    print
}' input.csv

출력으로 새 파일을 생성하려면 쉘 >리디렉션 연산자를 사용하면 됩니다.

awk -vOFS=, '{
      if (NR==77 || NR=132 || NR==140 || NR==142 || NR==155 || NR==156 || NR==157 || NR==175)
        $1=$2=$3=$4="N/A"
        print
    }' input.csv > newfile.csv

관련 정보