2013-01-07 2 views
0

검색 할 때 GNU sed 명령 (GNU sed 버전 4.2.1)을 사용하고 있습니다. 입력 파일을 그대로 유지하여 sed의 파일 쓰기 옵션을 사용하고 싶습니다. GNU sed가 일치하지 않는 행을 제외합니다.

다음

명령
sed -e "s/INSERT/UPDATE/w output.txt" "input.txt" 

그러나 위의 명령에 문제가는 타의 추종을 불허 라인을 기록하지 않습니다이다. 즉, 찾을 텍스트가없는 경우 검색 할 텍스트가있는 행을 output.txt 파일에 쓰지 않습니다.

나는 타의 추종을 불허하는 라인이 달성 할 수있는 방법을 경우 output.txt

로 작성 하시겠습니까?

답변

1

별도의 명령으로 사용 w, 즉 :

sed -e 's/INSERT/UPDATE/' -e 'w output.txt' input.txt 

또는, 당신의 sed가 지원하는 경우, 당신은 세미콜론 사용할 수 있습니다 : 당신은 정말 그냥 출력을 원하는 경우,

sed -e 's/INSERT/UPDATE/;w output.txt' input.txt 

을하지만, 파일에서 리디렉션을 사용하십시오.

sed -e 's/INSERT/UPDATE/' input.txt > output.txt 
+0

첫 번째 옵션은 효과가 있습니다. 세 번째 옵션을 알고 있지만 C#은 ProcessInfo 개체를 통해 리디렉션 옵션을 제공하도록 실행되지 않으므로 사용할 수 없습니다. – Sagar

+0

's /// w '표현은 정확히 "대체가 성공하면 쓰는"것을 의미하고,'s ///; w는 두 명령을 대체하고 (무조건적으로) 쓰는 것을 의미합니다. – tripleee

+0

나는'C#'에 대해서는 아무 것도 모르지만, 분명히 ProcessInfo 객체는'sh -c "sed ...> output.txt"'를 쓸 수있게 해줄 것이다. –

관련 문제