在Mac OSX Maverick上使用GAWK清空输出

时间:2014-01-26 02:33:47

标签: unix gawk

我有制表符分隔的文件(抱歉我不知道如何格式化它,不应该是空格,而是制表符)。

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

标记列和行名称周围有“”,值没有。再次,它以制表符分隔。

我的代码是:

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

1 个答案:

答案 0 :(得分:0)

你希望在你的awk动作中用NR==1完成什么?这意味着您的操作只会针对您输入的第一行执行。因此,无论您向awk提供多少行输入,该操作将(a)仅运行一次,并且(b)可能不输出任何内容,除非第一行恰好匹配somethingsomething2

我不清楚你要做什么,但也许这会有所帮助:

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

这将针对每一行运行,而不仅仅是第一行。如果第一个字段为somethingsomething2,则会打印字段1,2和4。

更新:我已将其修改为打印输入的第一行。