2014-01-26 1 views
0

탭으로 구분 된 파일이 있습니다. (서식을 지정하는 방법을 모르겠지만 공백이 아니어야 함).Mac OSX Maverick에서 GAWK를 사용하여 빈 출력

"" "logFC" "logCPM" "LR" "PValue" "FDR" 
"A1BG" -0.2 -1.5 5.3 0.0 0.1 

columns- 및 rows- 이름이 주위에 표시되어 있지만 값에는 표시되지 않았습니다. 그리고 다시 탭 구분.

내 코드는 다음과 같습니다

cat file1.csv file2.csv file3.csv | gawk 'NR==1 {if ($1=="something" || $1=="something2") print $1,$2,$4,;}' > test1.txt 

"있는 test1.txt는"그러나 비어 나는 이유를 알고하지 않습니다 .. 그래서

내가 실행 한 경우 : 내가 원하는

cat file1.csv file2.csv | gawk 'NR==1 {if ($1=="A1BG") print $1,$2,$4,;}' > A1BG.txt 

A1BG.txt 모양 :

"" "" "logFC" "LR" 
file1.csv "A1BG" -0.2 5.3 
file2.csv "A1BG" y x 
+0

편집 해 주셔서 감사합니다. 어떻게했는지 파악하려고 시도했습니다. – user3236594

+1

질문을하면, 서식 도움말을보기 위해 클릭 할 수있는 주황색 물음표가 나타납니다. 텍스트 영역의 맨 위에는 유용한 아이콘이 많이 있습니다. – larsks

답변

0

무엇입니까? awk 액션에서 NR==1으로 달성하기를 원하십니까? 즉, 귀하의 행동은 귀하의 의견의 첫 번째 행에 대해서만 실행됩니다. 따라서 입력 행의 수에 관계없이 첫 번째 행이 something 또는 something2과 일치하지 않는 한 그 동작은 (a) 한 번만 실행되고 (b)는 아무 것도 출력하지 않을 수 있습니다.

나는 당신이 뭘하려는 건지에 완전히 명확하지 않다,하지만 어쩌면이 도움이 될 것입니다

gawk ' 
    NR==1 {print} 
    $1 == "something" || $1 == "something2" {print FILENAME, $1,$2,$4} 
' file1.csv file2.csv file3.csv > test1.txt 

이 대신 첫 번째로, 모든 라인에 대해 실행됩니다. 첫 번째 필드가 something 또는 something2 인 경우에는 필드 1, 2를 출력하며, 4

는 UPDATE : I는 입력의 첫 번째 줄을 인쇄하려면이 옵션을 수정했습니다.

+0

NR == 1은 첫 번째 행 (열 이름)을 출력합니다. – user3236594

+0

그 위치에서'NR == 1 '은 * 조건 *입니다 - "NR의 값이 == 1이면 다음과 같은 일을합니다". 파일에는 하나의 작업 만 있습니다. – larsks

+0

일치하는 행의 1,2 및 4 열 외에 첫 번째 행을 인쇄하려면 내 업데이트를 참조하십시오. – larsks