我有一个大文本文件,其中的数据分为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}
我需要第一列(编号),最后一列{}。
答案 0 :(得分:5)
ALT
+ Left Mouse Click
会让您进入列模式选择。这是一个非常有用的快捷方式,可以帮助你。
答案 1 :(得分:5)
查找和替换的正则表达式是:
^( +\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
答案 2 :(得分:4)
您应该使用Windows平台上提供的awk
或gawk
。使用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的时间要短。
快乐的编码!