Я пытаюсь написать скрипт, который будет читать из текстового файла и выводить в другой файл строки, которые не соответствуют регулярному выражению.
У меня есть файл с двумя столбцами - в первом столбце находятся номера библиотеки Дьюи, а во втором столбце - штрих-коды.Число Дьюи должно быть примерно 150 ADD или 150.40 ADD.Я ищу строки, в которых отсутствуют 3-х символьные инициалы автора.Мой пример файла выглядит так:
100.20 SAD 350694345
250 ADD 369803434
300 360349320
300.1534234 ZOO 353000303
210 3633400340
Я написал скрипт для вывода всех строк, в которых нет инициалов автора после числа Дьюи.Регулярное выражение ищет 3 цифры перед необязательной точкой, затем ноль или более необязательных цифр, затем пробел, а затем 3 буквы инициалов автора.
$filename = 'call.txt';
$output = 'result.txt';
open(FILE, $filename) or die 'Could not open $filename';
foreach $line (<FILE>) {
if ($line !~ /^\d{3}\.*\d* [a-zA-Z]{3}/) {
open (CALL, '>', $output) or die $!;
print CALL $line;
}
}
Когда я запускаю скрипт, он выводит только5-я строка
210 3633400340
Я не уверен, почему она также не получает строку 3, поскольку она не соответствует регулярному выражению?На выходе должны быть все числа Дьюи без инициалов автора.Итак, желаемый результат:
300 360349320
210 3633400340
Я был бы очень признателен за некоторую помощь с этим
спасибо J