sed
레이블 안의 숫자를 제거하는 명령 은 다음과 같습니다 .
sed 's/\(<[^0-9>]*\)[0-9]*\([^0-9]*>\)/\1\2/g'
그런데 특정 문자열을 제외하는 방법을 아는 사람이 있나요?
이제 다음과 같이 표시됩니다. 다음을 입력하세요.
<user1></user1>
<password2></password2>
그리고 출력:
<user></user>
<password></password>
그러나 비밀번호 2와 같은 특정 문자열을 제외할 수 있기를 원하면 출력은 다음과 같습니다.
<user></user>
<password2></password2>
답변1
파일을 전처리하여 화이트리스트에 추가하려는 문자열에 특수 문자를 삽입하여 문자열이 교체되는 것을 방지할 수 있습니다.
당신이 바꿀 것처럼 :
<user1></user1>
<password2></password2>
도착하다
<user1></user1>
<|password2><|/password2>
먼저 s/\(<[^|0-9>]*\)[0-9]*\([^0-9]*>\)/\1\2/g
교체를 위해. 가능 하다면 |
입력에 이미 존재하는 경우 _
-> _u
, |
-> 와 같은 구성표를 사용하여 이스케이프할 수 있으며 _p
그 후에 실행 취소할 수 있습니다.
sed '
s/_/_u/g;s/|/_p/g
s:<\(/\{0,1\}password2>\):<|\1:g
s:<\(/\{0,1\}othertag>\):<|\1:g
s/\(<[^|0-9>]*\)[0-9]*\([^0-9]*>\)/\1\2/g
s/|//g;s/_p/|/g;s/_u/_/g'