각 단어가 다른 줄에 배치되는 큰 텍스트 파일이 있고 문자가 포함된 각 단어를 최대 한 번 찾아야 합니다.
(내가 찾아야 할 단어의 예 : 손가락, 석탄, 꿈, 나, 땅콩)
(출력에서 수신을 허용하지 않는 단어의 예: test(2 t 포함), strict(2 s 포함), zepelin(2 e 포함))
답변1
GNU 사용 sed
:
sed -E '/(.).*\1/d' <file
GNU를 사용하면 sed
아래와 같이 정규식에서 캡처링 그룹과 역참조를 사용할 수 있습니다. 우리는 단일 문자 캡처를 사용한 (.)
다음 원하는 만큼의 다른 문자를 캡처한 다음 동일한 문자를 다시 캡처합니다. 패턴이 일치하면 입력에서 해당 줄을 제거하고, 그렇지 않으면 해당 줄을 인쇄합니다.
예:
$ cat file
coal
dream
fingers
me
peanut
serious
zepelin
$ sed -E '/(.).*\1/d' <file
coal
dream
fingers
me
peanut
반복되는 문자가 포함된 단어 찾기:
$ sed -E '/(.).*\1/!d' <file
serious
zepelin
grep
이것은 GNU에서도 작동하는 것 같습니다:
$ grep -vE '(.).*\1' <file
coal
dream
fingers
me
peanut
$ grep -E '(.).*\1' <file
serious
zepelin