![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Расщепление пр. файла в 2 на определенном месте основанного на Textpattern | borgeh | Shell программирование и сценарии | 0 | 09-24-2007 08:02 PM |
| 1 вставить файл в определенном месте файла 2 | JCR | Shell программирование и сценарии | 1 | 02-01-2007 11:48 AM |
| Как изменить большого файла в Unix | balireddy_77 | Shell программирование и сценарии | 3 | 12-14-2006 07:40 AM |
| Помощь для редактирования больших файлов | jxh461 | Shell программирование и сценарии | 8 | 05-19-2003 05:38 PM |
| Как редактировать большие файлы, используя VI | nazri | UNIX для чайников Вопросы И Ответы | 3 | 06-15-2001 10:18 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Изменить один большой файл на месте
Люди,У меня есть файл с 50 млн. записей, имеющих 2 колонки. Я должен делать ниже: 1. Генерация случайных чисел из фиксированной длины. 2. Заменить второй колонке случайно выбранной строки при случайных чисел. Я пробовал использовать немного Perl для генерации случайных чисел и SED заменить ее вручную. Проблема я вижу в том, что она генерирует вывод с заменил запись с 50 млн. записей. Я бы скорее не выход для каждого ряда обновления. Я хотела бы получить после вывода всех обновлений сделали .... Мне было интересно, если я могу отредактировать файл на месте с помощью SED ... Я пытаюсь найти в этом месте вариант .. но я имею Dont GNU Версия SED ... Любые мысли ...? Спасибо V |
|
||||
|
Вот первоначальный переход на требования:
>> 1. Генерация случайных чисел из фиксированной длины. I \u003d 00000000 Эхо $ RANDOM $ I | светотеневую С 1-8 вышеуказанные служит для генерации случайных чисел для более чем 50 миллионов записей; опять не знаете, как часто повторяет ряд!! не ясно, о втором требования. быть конкретными, пожалуйста ... -Илан |
|
||||
|
Привет Илан,
Спасибо за этот вопрос ... У меня первая часть понял, ... Я могу сгенерировать случайное число с помощью небольшого Perl Сценарий, который я скачал из чистого ... Но у меня есть проблема со второй частью ... Я попытаюсь описать это лучше. У меня 50 миллионов записей в 2 колонки. Обе колонны присутствуют во всех отчетах. Шаг 1: Создать случайная величина (это часть я понял, выше) Шаг 2: Найдите случайной записи числе 50 млн. Шаг 3: Заменить значения во второй колонке с стоимости, созданной в шаге 1. Step4: Назад к Шаг 1, генерировать новое значение, ищите другой случайной записи, заменить его с этого значения, и так далее примерно в миллион раз. Я хочу иметь возможность сделать это на месте, поскольку каждый раз я заменить запись AWK, она дает всего 50 миллионов с учетом этого изменения, как выход, и я перенаправить вывод в другой файл, переименовать его в оригинальный и начать вновь на следующей итерации. Что мне нужно это способ для редактирования файлов в место в цикле определения случайной записи и изменения во второй колонке миллиона раз. Высокий уровень требований: Учитывая файл из 50 миллионов записей, я должен создать файл, который имеет 50 млн. записей, но 1 млн. записей, чьи второй колонке варьируется от первого файла. Может быть, есть более простой способ сделать это ... Но я сейчас тупик .... Спасибо, V |
|
||||
|
Не могли бы Вы, пожалуйста, должность некоторые выборки данных из входных и выходных, чтобы мы могли быть более четко определены требования.
|
|
||||
|
12123 | 12345678
42142 | 23442253 52315 | 32250205 .... .... ... .... .... около 50 млн. Теперь я хочу наугад выбирать записи и изменение стоимости второго столбца Например, если я выберу вторую запись наугад. Я буду менять 2 колонки для случайной величины: 12123 | 12345678 42142 | 53988989 52315 | 32250205 .... .... ... .... .... же операции 1 миллиона раз каждый раз выбирать разные записи наугад. |
|
||||
|
Я пробовал следующий код в AIX, в KSH
Код давно, но не существует, хотя т.д. Позвольте сказать, исходный файл origfile Шаг 1. SED S /"|"/" "/ г origfile> временный / ** Если у вас нету SED Вы должны изменить "|" с пустым с someting * / и после этого ваш исходный файл выглядит так 12123 12345678 * / grep-н "^ $" временный> origfile, RM временный / * После этого ваш исходный файл выглядит следующим образом; 1 12123 12345678 2 42142 53988989 Шаг 2. / ** производить 1 миллион случайных чисел и сэкономить на RandNumbersFile ** / Шаг 3. / ** производить 1 миллион случайных чисел и сэкономить на RandRecordsFile ** / Сорт-U RandRecordsFile> временный М. В. временный RandRecordsFile / * Вы можете производить 1 млн. номеров, но если вы сортировать unically она может быть меньше 1 млн. человек. Вы должны быть уверены в том, что каждая строка в этом файле является уникальным, вышеуказанные организует эту команду * / Пусть "NeededLine \u003d 1000000 -` WC-л RandRecordsFile | AWK '(печати $ 1)' `" / * Эта строка показывает, как много новых записей нужно после сортировки * / борьбы \u003d 0 в то время как [$ борьбы-LT $ NeededLine] делать / ** случайный RandomRecord (средства случайных чисел). Я хочу сказать вам необходимо добавить свой код здесь ** / grep $ RandomRecord RandomRecordsFile> / Dev / нуль если [$? NE-0] тогда Эхо $ RandomRecord>> RandomRecordsFile Пусть "Counter \u003d $ борьбе +1" FI готово Сорт-U RandomRecordsFile> временный паста временный RandNumbersFile> RandomRecordsFile RM временный / ** После этого ваш RandomRecordsFile выглядит так; 1 12345678 27 53988989 Первый стенд для записи числа, а второй rundom области (ориг второе поле) ** вступить-v1 origfile RandomRecordsFile> временный / ** непревзойденные линии ** / вступить-O 1.1,1.2,2.2 origfile RandomRecordsFile>> временный / * соответствием линий * / Сорт-U временный> origfile / * сортировать по Field1 * / / ** Если вам нужно добавить следующие строки светотеневую f2, f3 origfile> временный SED S / ""/"|"/ г временный> origfile ** / RM временный поэтому код; / ** производить 1 миллион случайных чисел и сэкономить на RandNumbersFile ** / / ** производить 1 миллион случайных чисел и сэкономить на RandRecordsFile ** / CP yourfile origfile SED S /"|"/" "/ г origfile> временный grep-н "^ $" временный> origfile Сорт-U RandRecordsFile> временный М. В. временный RandRecordsFile Пусть "NeededLine \u003d 1000000 -` WC-л RandRecordsFile | AWK '(печати $ 1)' `" в то время как [$ борьбы-LT $ NeededLine] делать / ** случайный RandomRecord (средства случайных чисел). Я хочу сказать вам необходимо добавить свой код здесь ** / grep $ RandomRecord RandomRecordsFile> / Dev / нуль если [$? NE-0] тогда Эхо $ RandomRecord>> RandomRecordsFile Пусть "Counter \u003d $ борьбе +1" FI готово Сорт-U RandomRecordsFile> временный паста временный RandNumbersFile> RandomRecordsFile вступить-v1 origfile RandomRecordsFile> временный вступить-O 1.1,1.2,2.2 origfile RandomRecordsFile Сорт-U временный> origfile RM временный Последний раз редактировалось fazliturk; на 09-03-2007 09:41 AM.. |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|