열이 다른 열과 일치하는 경우 특정 필드를 제거합니다.

열이 다른 열과 일치하는 경우 특정 필드를 제거합니다.

반복되는 필드가 있는 파일이 있습니다.

샘플 파일:

ID     |Date|id     |date|name|...(up to 71 fields)
1313335|xxx |1313335|xx  |Zuan|
1677783|xxx |1677783|xx  |Zen|
11106A7|xxx |Zack   |

첫 번째 열이 세 번째 열과 일치하면 세 번째 및 네 번째 열을 삭제합니다.

산출:

ID     |Date|name|...(up to 71 fields)
1313335|xxx |Zuan|
1677783|xxx |Zen |
11106A7|xxx |Zack|

당신의 도움이 필요해요!

답변1

열 1과 열 3의 공간이 동일하다고 가정하면 다음을 사용할 수 있습니다.

awk -F '|' -v OFS='|' '$1==$3 { for(i = 3; i < NF-1; i++) $i = $(i+2); NF -= 2 } { print }' sample.txt

설명하다:

-F '|' -v OFS='|'입력 및 출력 필드 구분
$1 == $3조건 설정: 3열에서 시작 1열과 3열이 동일함
for(i = 3; i < NF-1; i++) $i = $(i+2);값을 앞쪽 2열로 이동
NF -= 2열 수 줄이기
{ print }무조건 행 인쇄

스크립트는 헤더에서 열 3과 4가 ID동일하지 않기 때문에 제거하지 않는다는 점에 유의하십시오 id.

관련 정보