열 중 하나에 알 수 없는 값이 있고 해당 열 값을 동일한 행의 일부 열 값으로 바꿔야 하는 고정 너비 파일의 열 값을 바꿔야 합니다.
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
둘 다 아니라면 질문을 편집하여 요구하는 내용을 명확히 하고 보다 현실적인 대표적인 예를 제공하십시오.