반복되는 필드가 있는 파일이 있습니다.
샘플 파일:
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
.