2014-09-09 2 views
1

매우 제한적인 쉘 기능을 가진 유닉스 시스템에서 로그 파일을 줄이려고합니다. 이 작업을 수행하는 기본 방법은 ed입니다.ed onliner에서 쉘 변수 확장하기

ed -s file.txt <<< $'1,4d\nwq' 

을하지만 어떻게 내가 ed oneliner에서 쉘 변수에서을 삭제 에게 행의 수를 확장 할 수 있습니다 :

미세 라인의 수정 번호를 작품 삭제? 이 쉘 그냥 다른 방법으로, 심지어 비 인용에 인용 문자열을 연결하는 완벽하게 정상이지만

n_del=4; ed -s file.txt <<< $'1,\${n_del}d\nwq' 

답변

3

, 그래서 외모가 같은 수 있습니다 : 내가 좋아하는 뭔가를 찾고 있어요

$ n_del=4; ed -s test <<< "1,${n_del}"d$'\n'wq 

저는 믿습니다 , 여기 -diff는 한 줄짜리보다 더 깨끗합니다.

$ n_del=4 
$ ed -s test <<_EOF 
1,${n_del}d 
wq 
_EOF 
+1

'ed'는 처리 할 수있는 파일의 크기에 제한이있었습니다. 어쩌면 그게 지금 고쳐 졌을지도 몰라. 문제가 있다면 O.P.는 대신'ex'를 사용하는 것으로 전환 할 수 있습니다. 모두에게 행운을 빕니다. – shellter