구두점, 숫자, 대문자를 모두 제거하고 한 줄에 단어가 1개만 포함되도록 파일을 수정하고 싶습니다. 예:
안녕하세요, 잘 지내세요!
어떻게 지내
세요
약간의 도움을 받아 나는 이것을 생각해 냈습니다.
tr -d '[:punct:]' < file | tr -s '[:space:]' '\n' | tr -d '[0-9]' | tr '[A-Z]' '[a-z]' > cleanfile.txt
그러나 문제는 내 파일에 주소가 있을 때 대신 httpadresscom으로 끝난다는 것입니다.
http
adress
com
또한 "don't" 또는 "readme.txt"와 같은 단어가 이 출력을 갖는 것을 원하지 않습니다.
don
t
readme
txt
답변1
이렇게 하면 안에 점과 따옴표만 남기고 모든 단어를 분리해야 합니다. 밑줄은 아마도 원하지 않을 것입니다. 그러면 \w
작동하지 않습니다.
]# grep -oE "(\w|\.\w|'\w)*" text
one
two
Three
four
linux
file
system
isn't
What
nothing
mailto
a.b
some.org
Molly's
cat
Wrote
a
readme.txt
하나 또는 둘. 34리눅스의 파일시스템은 무엇인가요? "아무것도 없음" 메일 수신처: [이메일 보호됨]몰리의 고양이. readme.txt를 썼습니다.
문제는 tr
필요한 최소한의 컨텍스트입니다. 여기서 당신은 some.org
분할을 원하기 때문에 붙어 있지만 readme.txt
그렇지 않습니다. 이제 "@"이 사라졌습니다.
답변2
첫 번째 부분에서는 구두점을 제거하지 말고 공백으로 변환하세요.
두 번째 경우(기다리지 마세요): 단어 사전이 필요하거나 '
s를 제거하지 않을 수도 있습니다.