计算制表符分隔文件列之间的差异

时间:2011-05-06 14:02:59

标签: bash shell

我有一个4列和n行的制表符分隔文件。

我想找到第3列和第2列中存在的值的差异,并希望将它们存储在另一个文件中。

这就是我正在做的事情

cat filename | awk '{print $3 - $2}'>difference

它不起作用。我该如何改进代码?


解决方案:

  

我错过了关闭的单引号,我的眼睛如此调整到屏幕,我无法用35行代码弄清楚出了什么问题......出于沮丧,我在论坛上写了这个问题。 ..和[完成]错误的喜剧,我在这里[在]问题中写的语法是正确的(因为它包含两个单引号)。

     

谢谢大家的帮助。

4 个答案:

答案 0 :(得分:3)

如果行中有其他空格,请设置字段分隔符。

BEGIN {
  FS="\t"
}

答案 1 :(得分:2)

尝试使用-F强制将分隔符作为标签并将

括起来
cat filename | awk -F"\t" '{print $3 - $2}' > difference

答案 2 :(得分:1)

试试这个:

cat filename | awk -F'^ T''{print $ 3 - $ 4}'>差

其中^T是制表符分隔符(按Ctrl + V + T获取)

答案 3 :(得分:1)

有没有人在他们给出答案/ awk打破白色空间而不仅仅是空格之前进行测试。

我刚刚这样做了:

awk '{print $3 - $2}' temp.txt

它完美无缺。

这是我的档案:

1   2       7       4
11  12      13      14
1   12      3       4
1   2       3       4
1   2       3       4

这是我的结果:

$ awk '{print $3 - $2}' temp.txt
5
1
-9
1
1
$ 

事实上,我使用了你的命令,得到了相同的结果?

你能解释一下哪些不适合你吗?您使用的是哪些数据,以及您获得的结果是什么?