11GB
각 단어가 한 줄에 있기 때문에 정렬된 단어 목록 파일이 있습니다 .
처음부터 중복된 항목과 행을 제거해야 합니다 077
.
함께 실행해야 한다고 생각 sed
하지만 가능하다면 실시간 출력도 표시하고 sort -u
싶습니다 .display what's happening in terminal
time left
이 모든 것이 하나의 명령으로 이루어지며 Live CD
설치가 가능하거나 설치가 가능 해야 합니다 Backtrack 5 rc3
.
시간은 그다지 중요하지 않지만, ETA를 계산할 수 있는 방법이 있다면 아버지의 i7 기반 CPU를 빌릴 수 있을 것입니다. 이는 분명히 더 빨라야 하며, 그렇지 않으면 오래된 코어 2 CPU를 사용해야 할 것입니다.
명령을 사용하는 동안 직면한 문제 sort
는 VMware
라이브로 실행 중인 플레이어 아래에 공간이 부족하여 32GB
명령을 사용하여 USB에 임시 파일을 지정 해야 한다는 것입니다 -T
. Linux를 설치했다면 문제가 되지 않을 것 같습니다.
그러니 sed
이 일을 할 수 있는 완전한 명령을 나에게 주십시오.sort
awk
(whichever is most optimal)
답변1
발전을 위해 pv
. 텍스트만 삭제하므로 임시 파일이 필요하지 않습니다. 파일을 덮어쓰시면 됩니다. 파일이 이미 정렬되어 있는 경우에는 필요하지 않고 sort -u
그냥 정렬 됩니다 uniq
.
pv file | {
uniq | grep -v '^077'
perl -e 'truncate STDOUT, tell STDOUT'
} 1<> file
grep
Perl 라인은 쓰기가 끝나면 파일을 자릅니다.
파일을 제자리에 쓰는 것이므로 실수하면 되돌릴 수 없다는 점에 유의하세요.
답변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"