포함된 콜론 수에 따라 열의 값 수정

포함된 콜론 수에 따라 열의 값 수정

포함된 콜론 수에 따라 두 번째 열의 내용을 조작하겠습니다. 두 번째 필드에 콜론이 두 개 이상 포함되어 있으면 첫 번째 콜론 앞에 내용이 필요하고 그렇지 않으면 전체 값이 필요합니다.

#Input    
1 1131:11854476:4:1$ 0 114476 1 4
5 367504:11862778:4:2$ 0 118628 2 4
3 3:64357_3_2$ 0 18267 2 3 
4 7575:38680372:1$ 0 38372 1 2

# Output
1 1131 0 114476 1 4
5 367504 0 118628 2 4
3 3:64357_3_2$ 0 18267 2 3 
4 7575 0 386372 1 2

전체 파일을 조작하거나 처리한 후 단일 열을 복사하라는 다양한 제안을 발견했습니다.하지만 나머지 열은 처리되지 않은 상태로 유지해야 합니다. 단일 명령( awk/ cutone-liners) 또는 여러 명령 으로 이를 달성하는 방법에 대한 아이디어를 제공해 주시겠습니까 ?

답변1

split두 번째 필드를 켤 수 :있으며 2개 이상의 조각(즉, array 의 요소 수)을 얻으면 z첫 번째 필드만 유지합니다.

awk '{n=split($2, z, ":");if (n > 2) $2=z[1]};1' infile

사용하고 싶다면 sub다음과 같이 할 수 있습니다.

awk '{sub(/:.*:.*/,"",$2)};1' infile

즉, 두 개의 콜론(또는 그 이상)을 바꾸려고 시도합니다.

관련 정보