if-else 문을 사용하여 텍스트 파일 수정

if-else 문을 사용하여 텍스트 파일 수정

다음과 같은 입력 파일이 있습니다.

3 1 10 1 6  
9 4 2  4 1  
9 2 2  2 1  
2 4 2  2 2  
9 4 9  2 9 1 2    

관찰해야 할 조건:

  1. NF==5이고 $2와 $4가 동일한 경우 $3 위치에 11을 삽입하고 $2 또는 $4(여기서는 1)에 저장된 값을 $4 위치에 삽입합니다. 나머지 필드는 오른쪽으로 두 위치 이동됩니다.
  2. NF==5이고 $1과 $3이 동일한 경우 $1 또는 $3(여기서는 2)에 저장된 값을 $3 위치에 삽입하고 5를 $4 위치에 삽입합니다. 나머지 필드는 두 위치를 올바른 위치로 이동합니다.
  3. 나머지 줄은 변경되지 않습니다.

출력은 다음과 같아야 합니다.

3 1 11 1 10 1 6    
9 4 11 4 2  4 1  
9 2 11 2 2  2 1  
2 4 2  5 2  2 2  
9 4 9  2 9 1 2  

미리 감사드립니다!

답변1

$ awk 'NF==5{ if ($2==$4) $2 = $2 OFS 11 OFS $4; else if ($1==$3) $2 = $2 OFS $1 OFS 5 } 1' file
3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9  2 9 1 2

답변2

awk '{if((NF==5) && ($2 == $4)){$7=$5;$5=$3;$6=$4;$3=11;$4=$2;print $0}else if ((NF==5) && ($1 == $3)){$7=$5;$5=$3;$6=$4;$4=5;$3=$1;print }else{print $0}}' filename

산출

3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9  2 9 1 2 

답변3

다음은 원하는 출력을 제공하는 awk 명령 줄입니다.

awk '{if(NF == 5 && $2 == $4) {a=11; b=$2; $1 " " $2 " " a " " b " " $3 " " $4 " " $5;} else if(NF == 5 && $1 == $3) {c=$1; d=5; $1 " " $2 " "c " "d " "$3 " " $4 " " $5;} 인쇄 $0}'sample_simple.txt

관련 정보