Открыть сервисСервис

Удаление строк в текстовых данных

Удаление строк — операция обработки текстовых и табличных данных, заключающаяся в исключении из массива одной или нескольких строк по заданному условию либо по их позиции. Относится к базовым операциям редактирования текста и преобразования данных и реализуется как в интерактивных редакторах, так и в языках программирования, командных оболочках и системах управления базами данных.

Общее понятие

Строкой называют последовательность символов, завершённую символом перевода строки либо ограниченную началом и концом файла. Удаление строки означает, что эта последовательность вместе с завершающим её разделителем исключается из результата, а последующие строки сдвигаются. В табличных данных аналогом строки выступает запись (кортеж), поэтому операция тесно связана с удалением записей.

Различают удаление по позиции (номеру строки), по образцу (регулярному выражению, подстроке), по условию (значению поля, длине, наличию символов) и по дублированию (устранение повторов).

В текстовых редакторах

В интерактивных редакторах удаление строк выполняется командами меню или сочетаниями клавиш. Типовые приёмы:

  • выделение строки целиком и нажатие клавиши удаления;
  • команда «вырезать строку» с помещением её в буфер обмена;
  • удаление до конца или до начала строки;
  • удаление пустых строк и строк с пробельными символами.

В редакторах с расширениями (например, в редакторах кода) доступны массовые операции: удаление всех строк, содержащих заданный фрагмент, удаление дубликатов, удаление строк по номеру из списка.

В командных оболочках и утилитах

В Unix-подобных системах для удаления строк применяются потоковые утилиты. Утилита sed удаляет строки по номеру (sed '5d') или по образцу (sed '/шаблон/d'). Утилита grep с инвертированием (grep -v) выводит все строки, кроме соответствующих образцу, что равносильно их удалению. Утилита awk позволяет удалять строки по условию на значения полей. Команда uniq в сочетании с сортировкой устраняет повторяющиеся строки.

В Windows-средах аналогичные задачи решаются средствами PowerShell (командлеты фильтрации и отбора объектов) и утилитами пакетной обработки.

В языках программирования

В языках программирования удаление строк реализуется через работу с массивами строк или со строками как единым блоком.

СредаТиповой приём
Pythonразбиение текста методом splitlines(), фильтрация списка, обратная сборка join()
JavaScriptsplit('\n'), методы массивов filter, splice, затем join('\n')
JavaBufferedReader построчно, запись отобранных строк в новый поток
C#File.ReadAllLines, LINQ-фильтрация, File.WriteAllLines
SQLоператор DELETE FROM таблица WHERE условие

При построчной обработке больших файлов применяют потоковое чтение, чтобы не загружать весь объём в память.

В базах данных

В реляционных базах данных удаление строк выполняется оператором DELETE. Он может затрагивать одну запись (по первичному ключу), группу записей (по условию в WHERE) или все записи таблицы. Связанные записи в дочерних таблицах удаляются каскадно, если задано соответствующее ограничение внешнего ключа. Для полной очистки таблицы применяют оператор TRUNCATE, который выполняется быстрее, но не порождает построчных записей в журнале транзакций.

В электронных таблицах

В табличных процессорах строка удаляется командой контекстного меню или меню «Лист». При удалении строки ссылки в формулах автоматически корректируются, если они не были закреплены абсолютно. Для массового удаления используют фильтрацию с последующим удалением видимых строк либо встроенные средства обработки данных.

Условия и критерии

Критерии удаления строк задаются:

  • точным значением или подстрокой;
  • регулярным выражением;
  • длиной строки (например, удалить строки короче заданного числа символов);
  • наличием или отсутствием определённых символов;
  • позицией в файле (диапазон номеров);
  • повторяемостью (оставить только первое или последнее вхождение).

Обратимость и риски

Удаление строк в редакторах с историей действий обратимо отменой. В файловых операциях и базах данных удаление часто необратимо, поэтому применяют предварительное резервное копирование, транзакции и «мягкое» удаление с пометкой вместо физического исключения записи. Ошибочное удаление строк при пакетной обработке — распространённая причина потери данных, что требует проверки условий фильтрации на тестовой выборке.

Производительность

При обработке больших массивов эффективнее потоковые методы, не создающие полной копии данных в памяти. Удаление строк в базе данных ускоряется индексами по столбцам условия. Массовое удаление в таблицах замедляется пересчётом формул и зависимостей.

Источники: документация по утилитам GNU Coreutils и sed; справочные руководства по языкам Python, JavaScript, SQL; руководства пользователя текстовых редакторов и табличных процессоров.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru