포함된 콜론 수에 따라 두 번째 열의 내용을 조작하겠습니다. 두 번째 필드에 콜론이 두 개 이상 포함되어 있으면 첫 번째 콜론 앞에 내용이 필요하고 그렇지 않으면 전체 값이 필요합니다.
#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
/ cut
one-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
즉, 두 개의 콜론(또는 그 이상)을 바꾸려고 시도합니다.