다음과 같은 정보 세트가 포함된 파일이 있습니다.
cat filename
1 S121
2 M121
3 MS121
4 SM154
5 SM91
[mM] to MS
나는 같은 패턴을 유지하는 것들만 바꾸려고 노력했다 . sed script
다음을 시도했습니다.
sed -r 's/ms?([0-9])/MS\1/Ig' filename
그러나 이는 [mM]에만 국한된 것이 아니며 행 4와 5는 다음과 같이 변경될 수 있습니다.
4 SMS154
5 SMS91
도움을 주시면 감사하겠습니다. 천만에요!
답변1
다음에서 시작하는 하위 문자열과 일치합니다."쌀",선택적으로이어서"에스", 그 뒤에 숫자가 옵니다.[0-9].
4행과 5행의 텍스트에는 다음 하위 문자열도 포함되어 있습니다.
4SM154
5SM91
그래서 그들은 교체되었습니다.
패턴에 접두사를 추가해 보세요."\에스"다음과 같이 열 2의 접두사에만 관심이 있음을 나타냅니다.
sed -r 's/(\s)ms?([0-9])/\1XX\2/Ig'
답변2
이건 어때? 귀하의 질문이 맞습니까?
sed -r 's/m([^s])/MS\1/Ig' file