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

发布于 2024-10-09 21:08:42 字数 748 浏览 7 评论 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}

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

I have a big text file and the data in it are in 5 columns, but I need just the first and the last column of that.

It will take many days and probably with mistake if I want to enter the data of this two column one-by-one from here to another file.
Is there a fast way to do this?
For example:

     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}

I need the first column (numbering) and the last inside { }.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

弄潮 2024-10-16 21:08:42

ALT + 鼠标左键单击 使您进入列模式选择。这是一个非常有用的快捷方式,可能会对您有所帮助。

ALT + Left Mouse Click puts you in Column Mode Select. It's quite an useful shortcut that may help you.

诗酒趁年少 2024-10-16 21:08:42

在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

in Notepad++, you can use regular expression to do replacement:

the regex for find and replace is:

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

\1 \2

enter image description here

then can change the:

 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}

to:

     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

if not want the leading space, then use:

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

\1 \2

will change to:

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
疾风者 2024-10-16 21:08:42

您应该使用在 Windows 平台上也可用的 awkgawk。使用 gawk "{print $1,$5}" inpfile >输出文件。我复制了你的文件并将其命名为“one”。您可以看到由文件的第一列和第五列组成的输出。

>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}

You should use awk or gawk which is available on windows platform also. Use gawk "{print $1,$5}" inpfile > outfile. I copied your file named it 'one'. You can see the output which consists of 1st and 5th column of your file.

>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}
雪化雨蝶 2024-10-16 21:08:42

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

You can import it into Excel and manipulate it there.

各自安好 2024-10-16 21:08:42

如果您使用 .NET,FileHelpers 可能会为您节省大量时间。从您的帖子中我们无法得知您希望使用什么技术来完成此任务。

If you are using .NET, FileHelpers may save you a lot of time. From your post we can't tell what technology you are hoping to use to accomplish this.

在风中等你 2024-10-16 21:08:42

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

Ultraedit has a tool for selecting columns and opens large files (I tried a 900 Mb file on a 2008 desktop and it opened in 3 minutes). I think it has a demo version fully operational.
Excel could work if you do not have too many rows.
Cheers,

凉月流沐 2024-10-16 21:08:42

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

{Alt + 鼠标左键单击}

然后您可以在选定的列上拖动,您可以看到只选择了单个列。
复制并粘贴到任何您想要的地方。

One more way is to copy the data to MS word file.
Then use

{Alt + left mouse click}

Then you can drag on the selected column and you can see only a single column is selected.
Copy and paste wherever you want.

奢欲 2024-10-16 21:08:42

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

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

此 15 秒修复在 Windows 操作系统中不可用。在你衣柜里那台废弃的旧电脑上下载并安装 Linux 所花费的时间比从 Excel 中输入和输出数据所花费的时间要少。

快乐编码!

There is only one way to convolve ungodly amounts of data. That is with the command prompt.

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

This 15 second fix is not available in Windows OS. It will take you less time to download and install Linux on that old dead computer in your closet than it will to get your data in and out of Excel.

Happy coding!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文