입력: 정렬된 줄이 있는 파일
출력: 입력 파일에 고유한 행 ID(첫 번째 또는 임의)가 있는 파일
예
입력하다
abbylove
abbylove
abbylove
abbylover
abbylover
abbylovesyou
abbylovesyou
abbylsmith
abbylsmith
abbylyn
abbylynn
산출
1
4
6
8
10
11
0 인덱스도 괜찮습니다.
그러한 출력을 생성하는 방법은 무엇입니까? 쉘 uniq
과 명령 sort
에서 그러한 옵션을 찾지 못했습니다 .
고쳐 쓰다.
연도만 다른 포함된 파일에서 고유하고 인접한 줄을 찾으려고 합니다. 예를 들어 파일을 필터링하고 싶습니다.
abbylove2016
abbylove2017
abbylove2018
abb1999ylover
abb2005ylover
abbyloves2001you
abbyloves2006you
abbylsm1980ith
abbylsm2010ith
abbylyn2002
abbylynn1999
그리고 단지 얻을
abbylove2016
abb1999ylover
abbyloves2001you
abbylsm1980ith
abbylyn2002
abbylynn1999
연도를 지우면 도움이 될 것 같아요...
답변1
적어도 GNU의 경우uniq
$ nl input | uniq --skip-fields=1 | cut -f1
1
4
6
8
10
11
답변2
이전 행이 무엇인지 추적하고 현재 행이 이전 행과 같지 않으면 필요한 정보를 출력합니다.
$ awk '$0 != prev { print NR, $0; prev = $0 }' file
1 abbylove
4 abbylover
6 abbylovesyou
8 abbylsmith
10 abbylyn
11 abbylynn
또는
$ awk '$0 != prev { print NR; prev = $0 }' file
1
4
6
8
10
11
업데이트된 질문:
$ awk '{ curr=$0; gsub("[0-9]","",curr) } curr != prev { print; prev = curr }' file
abbylove2016
abb1999ylover
abbyloves2001you
abbylsm1980ith
abbylyn2002
abbylynn1999
먼저 현재 행의 모든 숫자를 제거한 다음 결과를 이전 행과 비교하는 방식으로 작동합니다(숫자를 제거한 후). 일치하는 항목이 없으면 원래 현재 행을 인쇄합니다.