我的文件中包含一些用数字填充的列(浮点数)。我需要根据其中一列中的值拆分这些文件(可以设置为第一列)。这意味着,何时
a b c
在我的文件中,值为c
fullfils 0.05<=c<=0.1
,然后创建名为c
的文件并复制整个列,其中满足c
- 条件...
这可能吗?我可以使用bash,awk,还有c ++的东西。
我已经搜索了一些解决方案但是 - 我可以将数据排序当然只读取行的第一个数字..
我不知道。
请非常高兴。
谢谢
简
答案 0 :(得分:1)
如果我理解你的要求:
awk '{print > $3}' file ...
答案 1 :(得分:1)
正如你提到的awk,awk中的基本规则是'匹配一行(默认情况下或正则表达式,条件或行号)'和'做某事,因为你找到了匹配'。
awk使用$ 1,$ 2,$ 3等值来指示它正在查看的当前数据行中的哪一列。 $ 0指的是整条线。所以...
awk '
BEGIN{
afile="afile.txt"
bfile="bfile.txt"
cfile="cfile.txt"
}
{
# test c value between .05 and .1
if ($3 >= 0.05 && $3 <= 0.1) print $0 > cfile
} inputData
请注意,我正在测试第三列的值(在您的示例中为c)。您可以使用$ 2来测试b列等。
如果您不知道我已经包含>= 0.5 && $3 <= 0.1
的条件测试,那么您将有一些学习知识。
问题的形式1.我有这个输入,2。我想要这个输出。 3.(但)我得到了这个输出,4。使用此代码.... {code here} ....有更好的机会在合理的时间内得到合理的回应; - )
我希望这会有所帮助。
P.S。因为您似乎是新用户,如果您得到的答案可以帮助您,请记住将其标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。