교체 패턴 후 첫 번째 문자를 삭제 SED :이유가 무엇이 잘못되었는지 궁금
b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /' inst nst
예상 출력 단서 사전에 너무 많은
inst
inst
감사합니다.
교체 패턴 후 첫 번째 문자를 삭제 SED :이유가 무엇이 잘못되었는지 궁금
b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /' inst nst
예상 출력 단서 사전에 너무 많은
inst
inst
감사합니다.
귀하의 패턴은 세 개의 문자와 일치, 이달 캡처의 첫 번째 문자를 대체하고 대신를 유지하고 있습니다. 마침표, 세미콜론 및 일부 비 공백 문자 그런 다음 세 문자 모두를 두 개의 문자 (줄 바꿈 및 공백)로 바꿉니다.
패턴이 .;i
과 일치하고이를 \n
으로 바꿉니다.
해당 공백이 아닌 문자를 캡처하여 다시 삽입해야합니다.
패턴에 \([^ ]\)
을 사용하고 패턴으로 \n \1
을 사용하십시오.
당신은 즉
sed -e 's/\.;\([^ ]\)/\n \1/'
Etan과 같이 설명하지 않았기 때문에 너무 많이, +1했지만 선택하지 않았습니다. –
또는 명령을 b = "inst.; inst"로 변경하십시오. echo $ b | sed -e 's /.;/\ n /' ; 개행 문자가있는 경우
이것은'; '항목을 교체하지 않으려 고합니다. –
왜이 경우 (샘플)의'[^]'? 이것은 분명히 어떤 공간 (또는 다른)이 발생할 수있는 더 복잡한 경우의 일부이다. – NeronLeVelu