2013-10-30 3 views
0

일부 텍스트 콘텐츠가 있습니다.파이프를 사용하는 리눅스 콘솔에서 텍스트를 다른 텍스트로 대체하려면 어떻게해야합니까?

[]의 텍스트를 파이프를 사용하여 !!!으로 바꿔야합니다.

내가 여러 그것을 할 수있는 방법, 그래서 .는 CR, LF 등을 처리 할 수 ​​cat myfile | sed -r 's/\[.+\]/!!!/' :
나는이 스크립트를 사용할 수 있습니까?
아마도 awk, perl 또는 이와 비슷한 것이 있습니까?
가장 간단한 방법이 바람직합니다.

+0

'파이프를 사용하는 다른 텍스트 '. 당신은 정교 할 수 있습니까? – devnull

+3

예제 입력 및 예상 출력을 제공해 주시겠습니까? 그것은 일을 더 분명하게 할 것입니다. –

답변

2

펄은이를위한 좋은 선택이다 :

perl -0777 -pe 's/\[.*?\]/!!!/gs' myfile 

perl -0777 -pe 's/\[.*?\]/!!!/gs' << END 
this is [some 
text in brackets] blah blah 
END 
this is !!! blah blah 
+0

감사합니다. 작동합니다. -0777은 무엇을합니까? '0777 레코드 분리 자 '란 무엇입니까? – DmitryR

+0

그것은 전체 파일을 기본'$ _' 변수로 옮기는 것을 말합니다. 이는 대괄호 사이에 연속 된 개행을 포함하여 개행 수가있을 수 있기 때문에 필요합니다. –

1
sed -n 'H; $ {x;s/\[.+\]/!!!/p;}' myfile 
라인으로 기본 라인으로

나오지 작업에는 CR의 LF에 의해이 없도록 태만. H는 버퍼에있는 모든 라인을 읽어 들인다. 마지막 라인에서 반응한다. (그래서 모든 파일은 CR을 포함해서 버퍼링된다.) x 버퍼를 찾는다. 그리고 결과를 출력하기 전에 sed가 전체적으로 적용된다. (sed의 -n 지정된 출력보다 다른 출력)

관련 문제