![문자, 숫자가 아닌 항목은 모두 ' '로 대체](https://linux55.com/image/153440/%EB%AC%B8%EC%9E%90%2C%20%EC%88%AB%EC%9E%90%EA%B0%80%20%EC%95%84%EB%8B%8C%20%ED%95%AD%EB%AA%A9%EC%9D%80%20%EB%AA%A8%EB%91%90%20'%20'%EB%A1%9C%20%EB%8C%80%EC%B2%B4.png)
".", "-", "/" 등과 같은 모든 기호를 ""로 바꾸고 싶습니다.
시도했지만 sed 's/[[!:alnum:]]/ /g' example.txt
작동하지 않습니다
의 경우 sed 's/[,;\.\-\/()_]/ /g' example.txt
'-' 대신 ''을 사용할 수 없다는 것을 알았습니다.
이를 수행할 수 있는 방법이 있습니까?
답변1
영숫자가 아닌 모든 문자를 일치시키려면 다음 [^[:alnum:]]
과 같습니다. [^abc]
선행 캐럿은 대괄호 표현식이 나열된 문자를 제외한 모든 문자와 일치하도록 합니다.
리터럴 대시를 일치시키려면 일치하는 문자 목록을 생성하기 위해 해석되지 않도록 해야 합니다. 대괄호 표현식의 첫 번째 문자로 만드십시오: [-,.;/()_]
.
/
sed는 대괄호 표현식 안에 있는 경우 구분 기호로 처리하지 않으므로 s///
앞에 백슬래시를 붙일 필요가 없습니다. (백슬래시는 자체적으로 일치합니다.) 예를 들어 echo 'a\b/c' | sed 's/[/\]/./g'
print a.b.c
.
예를 들어regex(7)
매뉴얼 페이지정규식 구문에 대한 참고 사항입니다. (주로 sed -E
많은/대부분의 sed에서 사용되는 확장 정규 표현식(ERE)에 대해 설명합니다.)