반응형
Bash 스크립트에서 중복 항목 제거
텍스트 파일에서 중복된 항목을 제거합니다. 예:
kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry)
sree=Tue Jan 20 14:05 19 IST 2012
divya = Tue Jan 20 14:20 19 IST 2012
anusha=Tue Jan 20 14:45 19 IST 2012
kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry)
Bash 스크립트를 사용하여 중복된 엔트리를 삭제할 수 있는 방법이 있습니까?
바람직한 출력
kavitha= Tue Feb 20 14:00 19 IST 2012
sree=Tue Jan 20 14:05 19 IST 2012
divya = Tue Jan 20 14:20 19 IST 2012
anusha=Tue Jan 20 14:45 19 IST 2012
넌 할 수 있다.sort
그리고나서uniq
:
$ sort -u input.txt
또는 사용awk
:
$ awk '!a[$0]++' input.txt
파일에서 중복된 연속 행을 삭제합니다('uniq' 에뮬레이트).
중복된 행 집합의 첫 번째 행은 유지되고 나머지는 삭제됩니다.
sed '$!N; /^\(.*\)\n\1$/!P; D'
@kev의 awk 솔루션과 유사한 Perl 원라이너:
perl -ne 'print if ! $a{$_}++' input
이 변동은 비교하기 전에 후행 공백을 제거합니다.
perl -lne 's/\s*$//; print if ! $a{$_}++' input
이 변형은 파일을 인플레이스로 편집합니다.
perl -i -ne 'print if ! $a{$_}++' input
이 변형은 파일을 인플레이스 편집하여 백업을 만듭니다.input.bak
perl -i.bak -ne 'print if ! $a{$_}++' input
다음과 같이 하면 도움이 될 수 있습니다.
cat -n file.txt |
sort -u -k2,7 |
sort -n |
sed 's/.*\t/ /;s/\([0-9]\{4\}\).*/\1/'
또는 다음과 같습니다.
awk '{line=substr($0,1,match($0,/[0-9][0-9][0-9][0-9]/)+3);sub(/^/," ",line);if(!dup[line]++)print line}' file.txt
언급URL : https://stackoverflow.com/questions/9377040/remove-duplicate-entries-in-a-bash-script
반응형
'source' 카테고리의 다른 글
함수를 호출하는 Excel 셀 (0) | 2023.04.24 |
---|---|
vba에서 VLOOKUP 함수 쓰기 (0) | 2023.04.24 |
ARC와 호환되는 Objective-C 싱글톤을 구현하려면 어떻게 해야 하나요? (0) | 2023.04.24 |
FormBuilder 컨트롤의 수동 값 설정 (0) | 2023.04.24 |
왼쪽 조인 포함 상위 1위 (0) | 2023.04.19 |