【问题标题】: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 列等。

    如果您不了解我在&gt;= 0.5 &amp;&amp; $3 &lt;= 0.1 中包含的那种条件测试,您将需要学习一些知识。

    问题形式为 1. 我有这个输入,2. 我想要这个输出。 3.(但是)我得到了这个输出,4.用这个代码.... {code here} ....有更好的机会在合理的时间内得到合理的响应;-)

    我希望这会有所帮助。

    附:由于您似乎是新用户,如果您得到对您有帮助的答案,请记住将其标记为已接受,和/或给它一个 +(或 -)作为有用的答案。

    【讨论】:

      【解决方案2】:

      如果我正确理解您的要求:

      awk '{print > $3}' file ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多