我有制表符分隔的文件(抱歉我不知道如何格式化它,不应该是空格,而是制表符)。
"" "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
答案 0 :(得分:0)
你希望在你的awk动作中用NR==1
完成什么?这意味着您的操作只会针对您输入的第一行执行。因此,无论您向awk提供多少行输入,该操作将(a)仅运行一次,并且(b)可能不输出任何内容,除非第一行恰好匹配something
或something2
我不清楚你要做什么,但也许这会有所帮助:
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。
更新:我已将其修改为打印输入的第一行。