2013-03-12 2 views
0

N 개 변수 뒤에 나오는 모든 변수 또는 변수 세트를 선택하고 싶습니다.

예 : 쉼표로 구분 된 여러 줄의 파일이 있습니다. 변수 번호 다음에 오는 모든 변수를 선택하려면 어떻게합니까? 4 다른 파일로 출력 하시겠습니까?

나는 파일 test1.txt 있습니다

A, B, C, D, E  
A, B, C, D, E, F, G  
A, B, C, D  

을 그리고 output.txt의 아래에 출력하려면 :

E  
E, F, G 
(Nothing), as Line 3 had only 4 variables. 

답변

1

당신은 cut으로 작업을 수행 할 수 있습니다

cut -d, -f5- test1.txt > output.txt 

설명 :
를 - 폭발하다 블록의 모든 라인은 -d 매개 변수를 기반으로합니다. 우리의 경우에는 콤마입니다.
- -f으로 어떤 블록을 인쇄해야하는지 나타냅니다. -f1은 첫 번째를 인쇄하고, -f-3은 세 번째 첫 번째 것을 인쇄합니다. -f5-으로 5시에서 끝까지 인쇄합니다.

sed -e '/^\([^,]*,\s*\)\{4\}/!d;s/^\([^,]*,\s*\)\{4\}//' test1.txt 

편집 : sed를 사용

+0

파이프가 필요하지 않으므로 적절하게 편집 된 게시물 –

+0

감사합니다. @spu 닉, 나는이 같은 문장을 '컷 (cut)'했다는 것을 몰랐다. – fedorqui

+0

@putnick, 고마워 .. 나는 이런 soemthing을 정확히 찾고 있었다! – Marcos

0

sed -e 's/^\([^,]*,\)\{4\}//;tX;d;b;:X;s/^\s*//' test1.txt 

그리고 하나 개의 값을 분리하기 (17 년 : 그냥 그것을보고하고 단순화 할 수 실현합니다 (t 가지 명령을 잊었다) 이 경우) 대신 다음 줄의 끝까지 실행하십시오.

sed -e 's/^\([^,]*,\)\{16\}//;tX;d;b;:X;s/^\s*\([^,]*\).*/\1/' test1.txt 
+0

@ 윌리엄스, sed 것 작동하지 않았다 .... 나는 거기에 다른 것을 추가해야합니까? – Marcos

+0

죄송합니다. 잘못된 시험에서 잘라내어 붙여 넣었습니다. 최소 5 개 필드가없는 행을 삭제하는 절을 포함하도록 답변을 업데이트했습니다. – William

+0

@ 윌리엄스, 좀 더 복잡하게 만들겠습니다. 행의 16 번째 변수 다음에 변수를 인쇄해야합니다. 파일로 출력합니다. 'cut'(위의 제시된 것)은 완벽하게 작동하지만 더 쉬운 솔루션을 원한다면 여전히 열려 있습니다. – Marcos

관련 문제