чтение файла с условием - PullRequest
0 голосов
/ 24 февраля 2011

Как мне это сделать:

  • читать файл, пока не выполнится какое-либо условие (например, строка содержит / ^ ABC: /, например)
  • , если условие достигнет, затем продолжитьчитать, пока не появится другое условие (например, перевод строки).и записать все эти строки в какой-нибудь другой файл
  • , если условие не выполнено, тогда ничего не делать.

Спасибо, Брайан

Ответы [ 2 ]

0 голосов
/ 24 февраля 2011

Bash

infile="example.in"
outfile="example.out"
reStart="^ABC"
reEnd="^DEF"
found=0

cat $infile | while read line; do
    if [[ $found == 0 ]]; then
        if [[ "$line" =~ $reStart ]]; then
            found=1
            touch $outfile
        fi
    else
        if [[ "$line" =~ $reEnd ]]; then
            found=0
        else
            echo $line >> $outfile
        fi
    fi
done

Выше будут записаны строки из $ infile между условиями начала ($ reStart) и конца ($ reEnd), но не строки с началоми сами завершите условия для $ outfile.Небольшая реструктуризация позаботится о том, чтобы самим написать начальную и конечную строки, если это то, что вам нужно.

0 голосов
/ 24 февраля 2011

.NET

  1. Используйте TextReader (и метод ReadLine ) для извлечения каждой строки.
  2. Используйте String.StartsWith (Лучше, чем регулярное выражение, меньше занимаемая площадь и делает то же, что вы пытаетесь выполнить, насколько я могу судить)
  3. Используйте TextWriter (и метод WriteLine ) для хранения ваших результатов.

PHP

  1. Используйте file , чтобы прочитать оригинал и поместить каждую строку в массив
  2. Используйте strncmp , чтобы увидеть, начинается ли строка с вашего соответствия "ABC:".
  3. Используйте file_put_contents , чтобы поместить совпадение в другой файл, отметив флаг FILE_APPEND в списке аргументов.

Я хотел бы охватить два популярных языка, а затем обновить, когда язык будет определен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...