Как извлечь определенные столбцы из большого текстового файла «Блокнот»? - PullRequest
0 голосов
/ 02 января 2011

У меня большой текстовый файл, и данные в нем находятся в 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}

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

Ответы [ 7 ]

5 голосов
/ 03 апреля 2013

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

5 голосов
/ 28 июля 2013

в 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
4 голосов
/ 18 июля 2013

Вы должны использовать 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}
0 голосов
/ 19 июля 2011

Есть только один способ свести нечестивые объемы данных. Это с помощью командной строки.

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

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

Удачного кодирования!

0 голосов
/ 02 января 2011

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

0 голосов
/ 02 января 2011

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

0 голосов
/ 02 января 2011

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

...