2011-01-02 2 views
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} 

мне нужен первый столбец (нумерация) и последний внутри {}.

+5

Это называется _TEXT file_. – SLaks

+0

См. SLaks. Практически все, что может обрабатывать текст, может сделать это (что опять-таки очень много всего), без блокнота. Языки, такие как Perl или Python или Ruby (или старые добрые инструменты командной строки unix), позволяют использовать наименьший объем кода, выбирать все, что вы установили. – delnan

ответ

0

Вы можете импортировать его в Excel и манипулировать им там.

0

Если вы используете .NET, FileHelpers может сэкономить вам много времени. С вашего поста мы не можем сказать, какую технологию вы надеетесь использовать для достижения этой цели.

+0

мой исходный файл находится в блокноте. – asd

0

У Ultraedit есть инструмент для выбора столбцов и открытия больших файлов (я попробовал файл в 900 Mb на рабочем столе 2008 года и открыл его за 3 минуты). Я думаю, что эта версия полностью работоспособна. Excel может работать, если у вас слишком много строк. Cheers,

-1

Существует только один способ свергнуть нечестивые количества данных. То есть с командной строкой.

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

Это 15-секундное исправление недоступно в ОС Windows. Вам потребуется меньше времени для загрузки и установки Linux на этом старом мертвом компьютере в вашем шкафу, чем для получения ваших данных в Excel и из него.

Счастливое кодирование!

4

ALT + Left Mouse Click помещает вас в Режим колонки Выберите. Это довольно полезный ярлык, который может вам помочь.

+0

Это, безусловно, самое простое решение. Скопируйте файл, отредактируйте копию, вырежьте ненужные столбцы. –

4

Вы должны использовать awk или gawk, который также можно приобрести на платформе 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} 
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 
+0

Замена правилами регулярного выражения! Используйте его все время. Хороший и очень подробный ответ! –