2011-07-26 4 views
2

각 줄마다 1 단어로 구성된 매우 큰 사전 파일이 있는데, 나는 그것을 내리고 싶습니다. 내가하고 싶은 무엇맥 터미널에서 커다란 텍스트 파일을 편집하십시오.

3-6 편지 부적절한 명사를 떠나, 그래서 다음을 기반으로 단어를 검색 할 수 있습니다 단어가 3 개 미만의 문자 인 경우 삭제,

  1. 그것을
  2. 단어가 6 자 이상인 경우
  3. 단어가 대문자 인 경우 단어를 삭제하거나 작은 따옴표 나 공백이 있으면
  4. 을 삭제하고 삭제하십시오.

나는이 사용 :

cat Downloads/en-US/en-US.dic | egrep '[a-z]{3,6}' > Downloads/3-6.txt 

을하지만 출력이 올바르지 않습니다. 그것은 3 자보다 큰 단어를 출력하지만, 그것은 지금까지 나의 진보에 관한 것입니다.

그럼 mac 터미널에서 어떻게해야합니까? 이 일을 올바르게 수행 할 수있는 방법이 있어야합니까?

+0

"단어에 공백이있는 경우"? 단어에는 공백이 없습니다. – You

+0

@You Debatable - 'car door'(예 : http://dictionary.reference.com/browse/car+door)를 참조하십시오. :) – Telemachus

+0

@ 텔레 마커스 : 두 단어라고 말하고 싶습니다. – You

답변

1

grep을 사용하고 보관하려는 라인과 일치하는 정규식 규칙을 작성하십시오. 터미널에 man grep을 입력하면 grep에 대한 정보를 얻을 수 있습니다.

2

다음 명령은 정확히 3 ~ 6 구성에만 단어 A-Z 소문자 선택합니다

egrep '^[a-z]{3,6}$' /usr/share/dict/words > filtered.txt 

는 출력 파일의 이름으로 입력 파일을 /usr/share/dict/wordsfiltered.txt를 교체합니다. 방금 Mac에서 작동하는지 확인했습니다. 희망이 도움이!

+1

이 문제를 해결하려면'{3,6} '과 같은 순서로 사람을 혼란스럽게 만듭니다. 그것은 우리 중 많은 사람들이 처음에 생각하는 것을하지 않습니다. 정규 표현식이 a-z 집합에서 ** 7 ** 문자와 일치하면 실패하지 않습니다. (이런 식으로 생각하십시오 : 'limited'*와 같은 일곱 글자 단어는 "az 집합에 3-6 자 사이의 순서를가집니다"라는 표현과 일치합니다. ** all ** regex가 묻는다면, 'e'에 도달하면 일치합니다.) 정규식 규칙을 7 자 이상의 단어로 만들려면 Anirvan과 같이 다음에 오는 것이 공백이나 줄의 끝 (또는 무엇이든)이되도록 지정해야합니다. – Telemachus

관련 문제