11GB 단어 목록 텍스트 파일에서 특정 줄과 중복 항목을 제거합니다.

11GB 단어 목록 텍스트 파일에서 특정 줄과 중복 항목을 제거합니다.

11GB각 단어가 한 줄에 있기 때문에 정렬된 단어 목록 파일이 있습니다 .

처음부터 중복된 항목과 행을 제거해야 합니다 077.

함께 실행해야 한다고 생각 sed하지만 가능하다면 실시간 출력도 표시하고 sort -u싶습니다 .display what's happening in terminaltime left

이 모든 것이 하나의 명령으로 이루어지며 Live CD설치가 가능하거나 설치가 가능 해야 합니다 Backtrack 5 rc3.

시간은 그다지 중요하지 않지만, ETA를 계산할 수 있는 방법이 있다면 아버지의 i7 기반 CPU를 빌릴 수 있을 것입니다. 이는 분명히 더 빨라야 하며, 그렇지 않으면 오래된 코어 2 CPU를 사용해야 할 것입니다.

명령을 사용하는 동안 직면한 문제 sortVMware라이브로 실행 중인 플레이어 아래에 공간이 부족하여 32GB명령을 사용하여 USB에 임시 파일을 지정 해야 한다는 것입니다 -T. Linux를 설치했다면 문제가 되지 않을 것 같습니다.

그러니 sed이 일을 할 수 있는 완전한 명령을 나에게 주십시오.sortawk(whichever is most optimal)

답변1

발전을 위해 pv. 텍스트만 삭제하므로 임시 파일이 필요하지 않습니다. 파일을 덮어쓰시면 됩니다. 파일이 이미 정렬되어 있는 경우에는 필요하지 않고 sort -u그냥 정렬 됩니다 uniq.

pv file | {
  uniq | grep -v '^077'
  perl -e 'truncate STDOUT, tell STDOUT'
} 1<> file

grepPerl 라인은 쓰기가 끝나면 파일을 자릅니다.

파일을 제자리에 쓰는 것이므로 실수하면 되돌릴 수 없다는 점에 유의하세요.

답변2

sed/awk/shell 스크립트의 복잡성을 크게 증가시키지 않고(따라서 전체 프로세스 속도를 늦추지 않고) ETA나 진행 상황을 표시할 수 있는지 확신할 수 없습니다. 가능한 한 빨리 만들고 싶다면 시도해 보십시오 cat source_file | uniq | sed -n -e '/^077/!p' > dest_file. 대략적인 진행률 표시를 얻으려면 dest_file백그라운드나 다른 터미널에서 명령을 실행하여 명령의 크기가 커지는 것을 볼 수 있습니다.

답변3

awk '!a[$0]++' "filename" > /tmp/dup
mv -f /tmp/dup "filename"

관련 정보