2014-04-10 3 views
0

내가 파일에서 처음 두 줄과 마지막 줄을 지우라는 명령을 사용하여 출력을 리디렉션과 내가 같은 파일파일에서 SED를 사용하여 라인을 삭제하고 같은 파일

예에 출력을 리디렉션 할 :

sed '1,2d' '$d' pra >pra 

내가 같은 출력을 파일로 리디렉션 할 때이 처음 두 행을 파일 나누었다에서 & 마지막 줄을 삭제 문제가 발생합니다.

리디렉션 된 파일을 열고 볼 때 pra 파일 내에 아무것도 없습니다.

거기에 파일의 처음 두 줄과 마지막 줄을 삭제하고 동일한 파일 이름으로 저장하는 더 좋은 방법이 있습니다.

+0

대신'sed -i '1,2d'...'를 사용하십시오. – devnull

+0

동일한 파일을 읽고 쓰는 일은 파일을 잘라 버릴 것이라고 많은 질문을합니다. – devnull

+0

@DEVNULL 솔라리스 10을 사용하고 있습니다. kshell에서 작업하는 것은 불법입니다. –

답변

2

GNU sed가 옵션 패키지로 설치되어 있지 않으면 Solaris 10에서 불가능합니다. 어쨌든 중간 파일을 사용하고 백업 파일에 -i 옵션을 사용하는 것이 가장 안전합니다. 대신이 작업을 수행 할 수있는 Solaris 10에서

:

sed '1,2d; $d' file > file.new && mv file.new file 
+0

감사합니다 :) 내 스크립트에 대해이 방법을 따랐습니다. –

0

사용, 같은 파일에 출력을 저장하려면 .. 이대로 장소 또는 -i 수정.

예.

sed -i options_you_want name_of_file_to_change 

임시 파일로 리디렉션 한 다음 다시 원래 파일로 되돌리는 것보다 훨씬 깔끔합니다.

아래와 같이 Solaris에서는 --in-place를 사용하지 못할 수도 있습니다 ...

+0

in-place 옵션이 Solaris에서 기본적으로 사용 가능하다고 생각하지 않습니다. – iruvar

+0

아, 감사합니다. – pokero

관련 문제