2014-01-07 2 views
1

내 CSV 파일은 12 열 (탭으로 구분)을 가지고 있으며, 나는 처음 11 열을 인쇄하고 싶습니다. 나는이 awk 코드를 생각해 냈지만, 포맷을 망가 뜨렸다. (더 이상 탭 구분자가 없다.) 첫 번째 열만 인쇄하는 동안 형식을 유지하려면 도움이 필요합니다. 도움을 주시면 감사하겠습니다.AWK : (마지막 열을 떠나는)는 제 11 열을 인쇄

awk '{for(i=1;i<12;i++)printf "%s",$i OFS}' 
+1

당신이 봤어 variaton는에'를 cut'? – Rubens

+0

어떤'AWK에 대한 '{(I = 1; i가 12 <; 내가 ++)에 대한의 printf "%의 \ t", $ i가 OFS}''? – suspectus

+0

예. 잘라 내기가이 목적에 조금 더 적합 할 수도 있습니다. 즉 OFS를 원하는 구분 기호 (즉 탭)로 설정해야한다고합니다. –

답변

2

이렇게하면 입력란 사이에 하나의 탭이 필요하다고 가정하면됩니다.

awk -vOFS='\t' '{NF=NF-1}1' $file 

-vOFS='\t'

는 탭 문자로 OFS을 설정합니다.

NF=NF-1 awk에 행보다 필드가 하나 작고 $0 값을 다시 계산하도록합니다.

1 패턴 프린트의 기본이 너무 $0를 인쇄하는 진정한 값을 사용합니다.

awk '{NF=NF-1}1' OFS='\t' $file을 시도하거나 awk 'BEGIN{OFS="\t"} {NF=NF-1}1' $file을 피하여 -v을 피하십시오.

+0

AWK를 선명하게하려면? – TonyGW

+1

이 무엇 AWK입니다 : 난 그냥 내 AWK 기술 조금 :) –

+0

@ TonyGW, 시스템에'gawk','nawk' 또는'/ usr/xpg4/bin/awk'이 있습니까? –

1

일부 awk 시스템에 루비가 있다면

awk 'NF-=1' OFS=\\t $file 
awk '{NF-=1}1' OFS=\\t $file 
awk '{NF-=1}1' OFS="\t" $file 
awk -v OFS="\t" '{NF-=1}1' $file 
+0

빈 줄에 첫 번째 줄 (음수 NF의 경우 awk 오류, 적어도 gawk 3.1.5의 경우 awk 오류)이 발생하고 전체적으로 한 줄만 줄입니다 원하는대로 빈 줄을 인쇄하는 것과 반대). –

0

# ruby -ne 'puts $_.split("\t")[0..10].join("\t")' file 
관련 문제