![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| файл сравнения ... Помощь необходима. | er_ashu | UNIX для чайников Вопросы И Ответы | 4 | 05-15-2008 10:37 PM |
| Сравнение Unix и Windows файл sysytem | localp | UNIX для чайников Вопросы И Ответы | 1 | 04-11-2008 05:02 AM |
| Выходной формат - по сравнению с I / P файл | velappangs | Shell программирование и сценарии | 1 | 04-03-2008 07:31 AM |
| файл сравнения сценарий | tiger99 | Shell программирование и сценарии | 1 | 01-30-2008 10:47 AM |
| Файл Время Сравнение Вопрос | pc9456 | UNIX перспективных И опытных пользователей | 2 | 07-23-2003 04:05 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Сравнение файлов
Я для сравнения двух текстовых файлов, очень немногие из строк в этих файлах будут иметь некоторые различия в несколько столбцов.
Файлы размером в ГБ. Пример строки ниже: 11111122222222333333aaaaaaaaaabbbbbbbbbccccccccdddddd 11111122222222333333aaaaaaaaaabbbbbbbbbccccccccddeddd Так что эти две строки из file1 и file2, соответственно, я должен получить вторую строку в файл нового выходного файла, который представляет собой разницу файл. То, что я хотел бы сделать, это прочитать LINE1 от file1 и цикл по всем направлениям в file2 и останавливаться, когда файл найден, остальное печати, что по линии выходного файла. И повторите те же действия для всех строк с file1. Признательна за любую помощь в этом вопросе. |
|
||||
|
Что вы подразумеваете под "стоп, когда файл найден", тогда вам дальше от file1 ....
Вы хотите на номер линии? Стоп, как правило, средства для выхода из следующего цикла. |
|
||||
|
Да, я хочу, чтобы выйти из петли следующего матча, когда будет найден, я не хочу, чтобы проверить какие-либо еще, что линия.
Нет, я не нужен прямой номер. |
|
||||
|
Если я понимаю, что вы пытаетесь сделать правильно, здесь быстро Баш скрипт. Код:
#!/bin/bash
compareFile = "/path/to/file/to/compare.txt"
outputFile = "/path/to/outputFile.txt"
for filename in /some/dir/of/text/files/*.txt; do
numlines=`cat $filename | wc -l`
for i in `seq 1 $numlines`; do
current=`cat $filename | head -$i | tail -1`
grep -q "${current}" ${compareFile}
if [ $? != 0 ]; then
#doesn't exist, append to $outputFile
echo "${filename}:${current}" >> ${outputFile}
fi
done
done
|
|
||||
|
Привет, спасибо за быстрое решение и выглядит очень похоже, что я хочу.
Но я не могу запустить этот скрипт, я использую KSH. Одна из ошибок, является "след: команда не найдена" |
|
||||
|
след, который (как правило, находится в / USR / BIN /)
Это индивидуальный исполняемых команд; должна быть частью из coreutils пакет, если вы используете Linux. если он существует в вашей системе, изменять сценарий след \u003d "/ путь / к / след" то изменить в заявлении использовать переменные: Я в `$ () след ... |
|
||||
|
Цитата:
Также след не является стандартной командой, в некоторых * NIX OS. Поэтому, если вы хотите использовать петли, что петлю над борьбе, а в то время как цикл может быть использован вместо. например, в то время как [$ NUM-ле $ numlines] |
![]() |
| Закладки |
| Теги |
| Linux |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|