【问题标题】:SPLIT file by Script (bash, cpp) - numbers in columns按脚本(bash、cpp)拆分文件 - 列中的数字
【发布时间】:2011-08-04 18:47:18
【问题描述】:
我有一些由数字(浮点数)填充的列的文件。我需要根据其中一列中的值拆分这些文件(可以设置为第一个)。这意味着,当
a b c
在我的文件中,值c fullfils 0.05<=c<=0.1 然后创建名为c 的文件并复制其中满足c-条件的整个列...
这可能吗?我可以用 bash、awk 做一些小的事情,也可以用 c++ 做一些事情。
我已经搜索了一些解决方案,但是 - 我当然可以对数据进行排序,并且只读取该行的第一个数字..
我不知道。
拜托,非常拜托。
谢谢
简
【问题讨论】:
标签:
bash
split
awk
conditional-statements
【解决方案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} ....有更好的机会在合理的时间内得到合理的响应;-)
我希望这会有所帮助。
附:由于您似乎是新用户,如果您得到对您有帮助的答案,请记住将其标记为已接受,和/或给它一个 +(或 -)作为有用的答案。
【解决方案2】:
如果我正确理解您的要求:
awk '{print > $3}' file ...