0

我有一个大文本文件,其中的数据分为 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}

我需要第一列(编号)和 {} 内的最后一列。

4

8 回答 8

8

ALT+Left Mouse Click让您进入Column Mode Select。这是一个非常有用的快捷方式,可能会对您有所帮助。

于 2013-04-03T15:05:34.317 回答
5

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

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

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

\1 \2

在此处输入图像描述

然后可以更改:

 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

在此处输入图像描述

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

^( +\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
于 2013-07-28T10:27:27.163 回答
4

您应该使用awkorgawk也可以在 Windows 平台上使用。使用gawk "{print $1,$5}" inpfile > outfile. 我复制了您的文件,将其命名为“一个”。您可以看到由文件的第 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}
于 2013-07-18T06:44:26.540 回答
1

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

于 2011-01-02T17:07:05.210 回答
0

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

于 2011-01-02T17:08:17.987 回答
0

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

于 2011-01-02T17:08:24.307 回答
0

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

{Alt + 鼠标左键点击}

然后你可以拖动选定的列,你可以看到只有一个列被选中。复制并粘贴到您想要的任何位置。

于 2020-01-30T13:56:04.467 回答
-1

只有一种方法可以对大量数据进行卷积。那是在命令提示符下。

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

此 15 秒修复在 Windows 操作系统中不可用。与将数据输入和输出 Excel 相比,您在壁橱中的旧计算机上下载和安装 Linux 所需的时间更少。

快乐编码!

于 2011-07-19T07:18:37.430 回答