8000개의 이상한 파일이 있는데 정리해야 합니다. 현재 이 sed 명령을 사용하여 특정 문자를 원하는 문자로 바꾸고 있습니다.
find . -name "*.txt" -print | xargs sed -i 's/a/z/g'
이는 모든 파일의 모든 a를 z로 재귀적으로 변경합니다. 내 질문은 다음과 같습니다
- z로 변경되는 명령에 일치시킬 여러 문자를 지정할 수 있나요?
- 일치하는 문자를 z로 변경하는 대신 삭제할 수 있나요?
미리 감사드립니다.
답변1
z로 변경되는 명령에 일치시킬 여러 문자를 지정할 수 있나요?
그래 넌 할수있어. 여러 문자를 대괄호로 묶으면 됩니다.
sed -i 's/[abc]/z/g' file.txt
이것은 모두를 대체합니다ㅏ,비, 그리고씨문자지.
대체되지 않습니다알파벳~와 함께지, 이는 다음으로 대체됩니다.쿨쿨.
일치하는 문자를 z로 변경하는 대신 삭제할 수 있나요?
이것은 매우 쉽습니다. 아무것도 넣지 않고 교체하면 됩니다.
sed -i 's/[abc]//g' file.txt
모두 삭제됩니다.ㅏ,비, 그리고씨문자.
find
참고: 이 예는 & 가 있는 경우에도 작동합니다 xargs
.
답변2
둘 다 예라고 답할 수 있습니다.
1: 소위 문자 클래스 [abcde]를 사용하면 그렇게 할 수 있습니다. 예:
echo abcabcabc | sed -e 's/[abc]/z/g'
세 개의 a,b,c를 모두 z로 대체합니다.
2: 빈 문자열로 대체하면 기본적으로 일치하는 모든 문자가 삭제됩니다. 예:
echo abcabcabc | sed -e 's/[ac]//g'
당신은 b 만 돌려받습니다.