如何从大记事本文本文件中提取某些列?

时间:2011-01-02 17:04:54

标签: notepad

我有一个大文本文件,其中的数据分为5列,但我只需要第一列和最后一列。

如果我想从这里逐个输入这两列的数据到另一个文件,可能需要很多天才可能会出错。 有没有快速的方法来做到这一点? 例如:

     1   1.0000000000000000         0.0000000000 S {0}
     2   1.5000000000000000         0.3010299957 C {2}
     3   1.7500000000000000         0.6020599913 S {0,2}
     4   2.0000000000000000         0.7781512504 C {3}
     5   2.3333333333333333         1.0791812460 C {3,2}
     6   2.5000000000000000         1.3802112417 S {3,0,2}
     7   2.5277777777777778         1.5563025008 S {0,3}
     8   2.5833333333333333         1.6812412374 S {3,0,0,2}
     9   2.8000000000000000         1.7781512504 C {5,2}
    10   3.0000000000000000         2.0791812460 C {5,0,2}

我需要第一列(编号),最后一列{}。

8 个答案:

答案 0 :(得分:5)

ALT + Left Mouse Click会让您进入列模式选择。这是一个非常有用的快捷方式,可以帮助你。

答案 1 :(得分:5)

在Notepad ++中,您可以使用正则表达式进行替换:

查找和替换的正则表达式是:

^( +\d+).+\{([\d,]+)\}$

\1 \2

enter image description here

然后可以改变:

 1   1.0000000000000000         0.0000000000 S {0}
 2   1.5000000000000000         0.3010299957 C {2}
 3   1.7500000000000000         0.6020599913 S {0,2}
 4   2.0000000000000000         0.7781512504 C {3}
 5   2.3333333333333333         1.0791812460 C {3,2}
 6   2.5000000000000000         1.3802112417 S {3,0,2}
 7   2.5277777777777778         1.5563025008 S {0,3}
 8   2.5833333333333333         1.6812412374 S {3,0,0,2}
 9   2.8000000000000000         1.7781512504 C {5,2}
10   3.0000000000000000         2.0791812460 C {5,0,2}

为:

     1 0
     2 2
     3 0,2
     4 3
     5 3,2
     6 3,0,2
     7 0,3
     8 3,0,0,2
     9 5,2
    10 5,0,2

enter image description here

如果不想要前导空格,那么使用:

^( +\d+).+\{([\d,]+)\}$

\1 \2

将更改为:

1 0
2 2
3 0,2
4 3
5 3,2
6 3,0,2
7 0,3
8 3,0,0,2
9 5,2
10 5,0,2

答案 2 :(得分:4)

您应该使用Windows平台上提供的awkgawk。使用gawk "{print $1,$5}" inpfile > outfile。我复制了你的名为'one'的文件。您可以看到由文件的第1列和第5列组成的输出。

>gawk "{print $1, $5}"  one
1 {0}
2 {2}
3 {0,2}
4 {3}
5 {3,2}
6 {3,0,2}
7 {0,3}
8 {3,0,0,2}
9 {5,2}
10 {5,0,2}

答案 3 :(得分:0)

您可以将其导入Excel并在那里进行操作。

答案 4 :(得分:0)

如果您使用的是.NET,FileHelpers可能会为您节省大量时间。从您的帖子中我们无法分辨您希望用什么技术来实现这一目标。

答案 5 :(得分:0)

Ultraedit有一个用于选择列并打开大文件的工具(我在2008桌面上尝试了900 Mb文件,并在3分钟内打开)。我认为它有一个完全可操作的演示版本。 如果您没有太多行,Excel可以工作。 欢呼声,

答案 6 :(得分:0)

另一种方法是将数据复制到MS Word文件。 然后使用

{Alt +鼠标左键}

然后,您可以在选定的列上拖动,并且只能看到选中的一列。 复制并粘贴到任意位置。

答案 7 :(得分:-1)

只有一种方法可以收集大量不正确的数据。这是命令提示符。

$cat text.txt | sed 's/{.*,//;s/  */ /g;s/[{}]//g' | awk '{print $1","$5}' > clean_text.csv

Windows操作系统中没有此15秒修复程序。在您的机柜中的旧死计算机上下载和安装Linux所需的时间比将数据输入和放出Excel的时间要短。

快乐的编码!