저는 tr
텍스트를 구문 분석하고 모든 단어를 소문자로 바꾸고 구두점 및 여러 공백을 제거하는 등 여러 작업을 수행하는 데 사용합니다. 최종 결과는 특정 상황을 제외하고 영숫자만 포함하는 깨끗한 소문자 텍스트여야 합니다.
word$digit
예를 들어
house$999
이 상황을 제외하면 공식은 매우 간단합니다. 예를 들어 구두점을 제거하는 경우 공백으로 대체합니다.
tr '[:punct:]' ' '
원하는 출력의 나머지 부분을 얻으려면 파이프를 사용하십시오. 예를 들어,
tr '[:upper:]' '[:lower:]' < $1 | tr '[:punct:]' ' ' | ... > $2
그러나 $
다른 인스턴스와 다른 모든 구두점을 제거하는 동안 숫자 집합 사이의 영숫자 문자와 기호가 유지되도록 예외를 정의하는 방법을 알아내는 데 몇 가지 문제가 있습니다.
답변1
@xenoid의 답변을 바탕으로 다음 코드가 저에게 효과적이었습니다.
echo -e "Hello.\n;132\$And; Another\$98?';:" | sed -e 's/\([[:alpha:]]\+\)\$\([[:digit:]]\+\)/\1 THIS \2/g' -e 's/[[:punct:]]//g' -e 's/ THIS /$/g' | tr '[:upper:]' '[:lower:]'
결과 :
hello
132and another$98