2013-01-14 1 views
1

하나 개의 컬럼으로 공백으로 두 번째 열 치료 : 나는 두 번째 열로 같은 줄에 첫 번째 열에 후 모든 것을 취급하는 AWK 라인을 원하는다음과 같습니다 파일에 대한 AWK

Paul white male 34 
Jane black female 22 
Sam  white male 44 

, 나는 AWK, 현재

white male 34 
black female 22 
white male 44 

다음 위에서 실행하고 생성 할 수 있도록 '{$ 2 인쇄} 만 출력 첫 단어, 라인이 아닌 나머지 것이다.

THanks! 이들의

+0

폴과 흰색 사이에 빈 탭이 붙어 있습니까? –

+0

그것은 일련의 공간입니다. –

답변

1

하나는 첫 번째 공백 문자가와 공간의 나머지 부분이 무엇인지 따라 작동해야합니다

awk '{sub(/[^ ]+[ ]+/,"")}1' file 
awk -F'\t' '{print $2}' file 
+0

+1, 처음에는 더 좋다고 생각합니다. OP가 처음에 여분의 공간을 신경 쓰지 않는다면 : awk '{$ 1 = ""; print}'file'도 잘 동작 할 것입니다. –

+0

$ 1을 지정하면 바람직하지 않을 수도있는 행의 다른 공백이 뒤죽박죽입니다. –

+0

@ KingsIndian urh ... 게시 된 답변을 다음 귀하의 의견을 보았다 .... – Kent

0

에드 모튼은 사용자의 요구에 대한 표준 방법 및 작업을 제공했습니다.

내가 다른 (까다로운) 방법 말할 것이다 : 대신 $2를 인쇄하는, 당신의 AWK 줄에

을, 당신은 전체 라인을 인쇄 $1=""을 설정할 수 있습니다.

kent$ echo "Paul white male 34 
Jane black female 22 
Sam  white male 44"|awk '!($1="")' 
white male 34 
black female 22 
white male 44 

이 한 줄이 매우 짧고 당신에게 출력을 제공 :

awk '!($1="")' file 

테스트를 참조하십시오. 그러나 각 행에는 앞에 공백이 있습니다. 다음과 같은 방법으로도 쉽게 제거 할 수 있습니다.

awk '!($1="")&&gsub(/^ /,"")'