2010-04-01 5 views

답변

51

GNU SED는 적절한 어드레싱 모드 가지고

sed -n '1~2!p' file 

라인 1부터 의미하고, 2 단계, 인쇄 다른 선.

동등하게, 당신은 -n을 삭제하고 삭제할 수 있습니다 일치하는 라인 :

sed '1~2d' 

또한 AWK 사용하여 수행 할 수 있습니다 :

awk 'NR%2==0' file 

(줄 번호는 2의 배수 때마다, 인쇄 줄)

+0

감사합니다. 매우 도움이됩니다. –

+1

macos에서 sed로 시도 할 때 "invalid command code ~"오류가 발생합니다. –

31

내가 생각할 수있는 가장 짧은 길이는 다음과 같습니다.

sed -n 'g;n;p' file 

비 GNU 버전 sed (GNU sed)과 함께 작동해야합니다.

+4

+1 이식성을 위해서 –

+3

이것은 OS X에서도 작동합니다! ('sed -n '1 ~ 2! p''와는 다릅니다.) 행 2,4,6이 걸립니다. 맨 페이지에서 행 1,3,5를 가져 오는 방법을 알 수 없습니다. 하지만 첫 번째 줄을 추가하는 것은 간단한 해킹입니다. – Nagel

+7

@Nagel : 시도해보십시오 :'sed -n 'p; n'file' 또는'sed 'n; d'file' : 홀수 라인 출력. 그건 그렇고, 나는'g'가 짝수 행을 출력하는 데 필요하다고 생각하지 않는다 :'sed -n 'n; p'file'가 작동하는 것처럼 보인다. –

3

펄 솔루션 :

perl -ne 'print if $. % 2 == 0' file 

$. 오늘 아침 4 월뿐만 아니라 농담을 바보 것으로 보인다 행 번호의 질문

+0

남자가'sed'를 부탁했는데, 당신의 읽기 능력이 좋지 않지만 누군가가 유용하다고 생각할지도 모른다. 그래서 +1. –

+1

sed, awk 및 perl은 종종 서로 바꿔서 사용할 수 있으므로 대답했습니다. 속도와 단순성에는 차이가 있지만 명령 줄이나 셸 스크립트에서 모두 사용됩니다. –

관련 문제