AWK 명령을 사용하여 0000000X가 있는 특정 열의 열 값을 바꿔야 합니다.

AWK 명령을 사용하여 0000000X가 있는 특정 열의 열 값을 바꿔야 합니다.

열 중 하나에 알 수 없는 값이 있고 해당 열 값을 동일한 행의 일부 열 값으로 바꿔야 하는 고정 너비 파일의 열 값을 바꿔야 합니다.

      A      B      C      D        E    F      G     H     I     J      K     L      M      N
ex: 123908 456567 675674 0000000x 45678 09756 125678 45678 09756 125678 45678 09756 125678 45678 09756  

여기서는 0000000x(D 열)을 (G 열)로 바꿔야 합니다 125678.

나는 시도했다:

awk 'BEGIN{FS=OFS=""}{f=0;for(i=292;i<=300;i++){if($i!~/0000000X/){f=1}};if(f) {for(i=292;i<=300;i++){$i=2}};print }'

이 명령은 모든 행의 해당 열을 변경합니다. 하지만 0000000x해당 값이 있는 특정 열을 변경 해야 합니다 .

답변1

다음 입력이 주어지면:

$ cat file
a X c D e X f
a B c D e X f

이 작업을 수행하려는 것 같습니다.

$ awk '$2=="X"{$2=$4} 1' file
a D c D e X f
a B c D e X f

아니면 이거:

$ awk '{for (i=1;i<=NF;i++) if ($i=="X") $i=$4} 1' file
a D c D e D f
a B c D e D f

둘 다 아니라면 질문을 편집하여 요구하는 내용을 명확히 하고 보다 현실적인 대표적인 예를 제공하십시오.

관련 정보