2014-11-06 2 views
0

교체 패턴 후 첫 번째 문자를 삭제 SED :이유가 무엇이 잘못되었는지 궁금

b="inst.;inst" ; echo $b | sed -e 's/\.;[^ ]/\n /' inst nst

예상 출력 단서 사전에 너무 많은

inst 
inst 

감사합니다.

+0

왜이 경우 (샘플)의'[^]'? 이것은 분명히 어떤 공간 (또는 다른)이 발생할 수있는 더 복잡한 경우의 일부이다. – NeronLeVelu

답변

4

귀하의 패턴은 세 개의 문자와 일치, 이달 캡처의 첫 번째 문자를 대체하고 대신를 유지하고 있습니다. 마침표, 세미콜론 및 일부 비 공백 문자 그런 다음 세 문자 모두를 두 개의 문자 (줄 바꿈 및 공백)로 바꿉니다.

패턴이 .;i과 일치하고이를 \n으로 바꿉니다.

해당 공백이 아닌 문자를 캡처하여 다시 삽입해야합니다.

패턴에 \([^ ]\)을 사용하고 패턴으로 \n \1을 사용하십시오.

2

당신은 즉

sed -e 's/\.;\([^ ]\)/\n \1/' 
+0

Etan과 같이 설명하지 않았기 때문에 너무 많이, +1했지만 선택하지 않았습니다. –

0

또는 명령을 b = "inst.; inst"로 변경하십시오. echo $ b | sed -e 's /.;/\ n /' ; 개행 문자가있는 경우

+1

이것은'; '항목을 교체하지 않으려 고합니다. –

관련 문제