Я хочу разбить большую текстовую базу данных (~ 10 миллионов строк). Я могу использовать команду как
$ sed -i -e '4 s/(dB)//' -e '4 s/Best\ unit/Best_Unit/' -e '1,3 d' '/cygdrive/c/ Radio Mobile/Output/TRC_TestProcess/trc_longlands.txt'
$ split -l 1000000 /cygdrive/P/2012/Job_044_DM_Radio_Propogation/Working/FinalPropogation/TRC_Longlands/trc_longlands.txt 1
Первая строка - очистить базу данных, а следующая - разделить ее.
но тогда выходные файлы не имеют имен полей. Как я могу включить имена полей в каждый набор данных и передать список, в котором есть исходный файл, новое имя файла и номера строк (из исходного файла). Это сделано для того, чтобы его можно было использовать в модели arcgis для повторного объединения окончательных упрощенных наборов данных многоугольника.
АЛЬТЕРНАТИВНО И БОЛЬШЕ ПОЛЕЗНО - так как это должно войти в модель arcgis, лучше всего решение на основе Python Больше подробностей в https://gis.stackexchange.com/questions/21420/large-point-to-polygon-by-buffer-join-buffer-dissolve-issues#comment29062_21420 и Удаление определенных строк из большого текстового файла в python
ТАК ИДЕТ С Python-решением на основе CYGWIN согласно ответу icyrock.com
у нас есть process_text.sh
cd /cygdrive/P/2012/Job_044_DM_Radio_Propogation/Working/FinalPropogation/TRC_Longlands
mkdir processing
cp trc_longlands.txt processing/trc_longlands.txt
cd txt_processing
sed -i -e '4 s/(dB)//' -e '4 s/Best\ unit/Best_Unit/' -e '1,3 d' 'trc_longlands.txt'
split -l 1000000 trc_longlands.txt trc_longlands_
cat > a
h
1
2
3
4
5
6
7
8
9
^D
split -l 3
split -l 3 a 1
mv 1aa 21aa
for i in 1*; do head -n1 21aa|cat - $i > 2$i; done
for i in 21*; do echo ---- $i; cat $i; done
как можно заменить "TRC_Longlands" и путь на имя входного файла - в python у нас есть имя% path% /% для этого.
в последней строке "do echo" необходимо?
и это вызывается python с использованием
import os
os.system("process_text.bat")
где process_text.bat в основном
bash process_text.sh
Я получаю следующую ошибку при запуске из DOS ...
Microsoft Windows [Версия 6.1.7601] Copyright (c) 2009 Microsoft
Корпорация. Все права защищены.
C: \ Users \ georgec> Баш
P: \ 2012 \ Job_044_DM_Radio_Propogation \ Working \ FinalPropogat
ion \ TRC_Longlands \ process_text.sh 'bash' не распознается как
внутренняя или внешняя команда, работающая программа или командный файл.
также когда я запускаю команду bash из cygwin, я получаю
georgec @ ATGIS25
/ Cygdrive / P / 2012 / Job_044_DM_Radio_Propogation / Работа / FinalPropogation / TRC_Longlands
$ bash process_text.sh: Нет такого файла или каталога:
/ Cygdrive / P / 2012 / Job_044_DM_Radio_Propogation / Работа / FinalPropogation / TRC_Longlands
cp: не может создать обычный файл `processing / trc_longlands.txt \ r ': нет
такой файл или каталог: Нет такого файла или каталога: txt_processing:
Нет такого файла или directoryds.txt
но файлы создаются в корневом каталоге.
почему есть "." после имени каталога? как им дать расширение .txt?