Linux удаляет первую строку из файла
Обновлено: 21.11.2024
Вы можете использовать «редактор потока для фильтрации и преобразования текста» sed. Здесь -i означает редактирование файла на месте. d — команда «удалить пространство шаблонов; немедленно начать следующий цикл».
Как удалить строку из файла в Unix?
Чтобы удалить строки из исходного файла, используйте параметр -i с командой sed. Если вы не хотите удалять строки из исходного файла, вы можете перенаправить вывод команды sed в другой файл.
Как удалить первые 10 строк в Unix?
- Параметры sed -i и gawk v4.1 -i -inplace в основном создают временный файл за кулисами. IMO sed должен быть быстрее, чем tail и awk. – …
- tail для этой задачи в несколько раз быстрее, чем sed или awk . (конечно, не подходит для этого вопроса по-настоящему на месте) thanasisp 22 сен.
Как удалить последнюю строку в Unix?
Теперь просто дважды нажмите d на клавиатуре. Это сделает именно то, что вы хотите — удалить последнюю строку. После этого нажмите :, затем x и нажмите Enter .
Как удалить последние 10 строк в Unix?
Удалить последние N строк файла в Linux
Как удалить строку в CMD?
2 ответа. Клавиша Escape (Esc) очистит строку ввода. Кроме того, нажатие Ctrl+C переместит курсор на новую пустую строку.
Как удалить текст в Linux?
- Чтобы удалить один файл, используйте команду rm или unlink, за которой следует имя файла: unlink filename rm filename. …
- Чтобы удалить сразу несколько файлов, используйте команду rm, за которой следует имя файла, разделенное пробелом. …
- Используйте rm с параметром -i для подтверждения каждого файла перед его удалением: rm -i имя(я) файла(ов)
Как удалить несколько строк в Unix?
- Нажмите клавишу Esc, чтобы перейти в обычный режим.
- Поместите курсор на первую строку, которую хотите удалить.
- Введите 5dd и нажмите Enter, чтобы удалить следующие пять строк.
Как удалить линию между двумя шаблонами Unix?
- Используйте следующую команду, чтобы удалить строки, лежащие между ШАБЛОН-1 и ШАБЛОН-2, исключая строки, содержащие эти шаблоны: …
- Используйте следующую команду, чтобы удалить строки, лежащие между ШАБЛОН-1 и ШАБЛОН-2, включая строки, содержащие эти шаблоны: …
- Чтобы удалить все строки после ШАБЛОНА-2, используйте это.
Как удалить диапазон строк в Linux?
Android построен на основе системы ядра Linux. Вариантами Linux являются debian, fedora и open SUSE. Однако эта команда просто печатает строки на терминале и не удаляет их из файла. Чтобы удалить строки из исходного файла, используйте параметр -i команды sed.
Как подсчитать количество строк в файле в Linux?
Самый простой способ подсчитать количество строк, слов и символов в текстовом файле — использовать команду Linux «wc» в терминале. Команда «wc» в основном означает «количество слов», и с различными необязательными параметрами ее можно использовать для подсчета количества строк, слов и символов в текстовом файле.
Как удалить первую N строку из файла?
- 1 перейти на первую строку.
- 5 выберите 5 строк.
- удалить.
- x сохранить и закрыть.
Что такое sed-скрипт?
Обзор сценария sed 3.1
Программа sed состоит из одной или нескольких команд sed, передаваемых одним или несколькими параметрами -e , -f , --expression и --file или первым аргументом, не являющимся параметром, если не используется ни один из этих параметров. . … [адрес] может быть номером одной строки, регулярным выражением или диапазоном строк (см. адреса sed).
Мне нужно несколько раз удалить первую строку из огромного текстового файла с помощью скрипта bash.
Сейчас я использую sed -i -e "1d" $FILE, но удаление занимает около минуты.
Есть ли более эффективный способ добиться этого?
tail НАМНОГО МЕДЛЕННЕЕ, чем sed. хвосту нужно 13,5 с, sed нужно 0,85 с. В моем файле ~ 1 млн строк, ~ 100 МБ. MacBook Air 2013 года с твердотельным накопителем.
17 ответов 17
-n x : просто напечатать последние x строк. tail -n 5 даст вам последние 5 строк ввода. Знак + инвертирует аргумент и заставляет хвост печатать что угодно, кроме первых строк x-1. tail -n +1 напечатает весь файл, tail -n +2 все, кроме первой строки и т. д.
tail GNU намного быстрее, чем sed . tail также доступен в BSD, а флаг -n +2 одинаков для обоих инструментов. Дополнительную информацию см. на справочных страницах FreeBSD или OS X.
Однако версия BSD может быть намного медленнее, чем sed . Интересно, как им это удалось; tail должен просто читать файл построчно, в то время как sed выполняет довольно сложные операции, включая интерпретацию скрипта, применение регулярных выражений и тому подобное.
Примечание: у вас может возникнуть соблазн использовать
но это даст вам пустой файл.Причина в том, что перенаправление ( > ) происходит до того, как оболочка вызывает хвост:
- Shell обрезает файл $FILE
- Shell создает новый процесс для tail
- Shell перенаправляет стандартный вывод хвостового процесса в $FILE
- tail читает из уже пустого $FILE
Если вы хотите удалить первую строку внутри файла, используйте:
&& гарантирует, что файл не будет перезаписан в случае возникновения проблемы.
@Eddie: user869097 сказал, что это не работает, когда одна строка занимает 15 МБ или больше. Пока строки короче, хвост будет работать для любого размера файла.
@Dreampuf - со страницы руководства: -n N означает вывод последних N строк вместо последних 10; или используйте +N для вывода строк, начинающихся с N-ой
Я собирался согласиться с @JonaChristopherSahnwaldt — tail намного, намного медленнее, чем вариант sed, на порядок. Я тестирую его на файле из 500 000 тысяч строк (не более 50 символов в строке). Однако затем я понял, что использую версию tail для FreeBSD (которая по умолчанию поставляется с OS X). Когда я переключился на хвост GNU, вызов tail был в 10 раз быстрее, чем вызов sed (и вызов GNU sed тоже). AaronDigulla здесь прав, если вы используете GNU.
Вы можете использовать -i для обновления файла без использования оператора '>'. Следующая команда удалит первую строку из файла и сохранит ее в файле (за кулисами используется временный файл).
Напоминаем, что Mac требует указания суффикса при использовании sed с редактированием на месте. Так что запустите выше с -i.bak
Эта версия действительно намного читабельнее и универсальнее, чем tail -n +2 . Не уверен, почему это не лучший ответ.
Для тех, кто использует SunOS, не относящуюся к GNU, поможет следующий код:
Это легко сделать с помощью:
в командной строке; или, чтобы навсегда удалить первую строку файла, используйте режим sed на месте с флагом -i:
Технически параметр -i принимает аргумент, указывающий суффикс файла, который следует использовать при создании резервной копии файла (например, sed -I .bak 1d имя файла создает копию исходного файла с именем имя_файла.bak с неповрежденной первой строкой) . В то время как GNU sed позволяет вам указать -i без аргумента, чтобы пропустить резервное копирование, BSD sed, найденный в macOS, требует аргумента пустой строки в качестве отдельного слова оболочки (например, sed -i '' . ).
Нет, это максимально эффективно. Вы могли бы написать программу на C, которая могла бы выполнять эту работу немного быстрее (меньше времени запуска и обработки аргументов), но она, вероятно, будет стремиться к той же скорости, что и sed, поскольку файлы становятся большими (и я предполагаю, что они большие, если это занимает минуту ).
Но ваш вопрос страдает от той же проблемы, что и многие другие, поскольку он предполагает решение. Если бы вы подробно рассказали нам, что вы пытаетесь сделать, а не как, мы могли бы предложить лучший вариант.
Например, если это файл A, который обрабатывает другая программа B, одним из решений будет не удалять первую строку, а модифицировать программу B, чтобы она обрабатывалась по-другому.
Допустим, все ваши программы присоединяются к этому файлу A, а программа B в настоящее время читает и обрабатывает первую строку перед ее удалением.
Вы можете перепроектировать программу B так, чтобы она не пыталась удалить первую строку, а сохраняла постоянное (вероятно, файловое) смещение в файле A, чтобы при следующем запуске она могла искать эту строку. смещение, обработайте строку и обновите смещение.
Затем, в спокойное время (в полночь?), он может выполнить специальную обработку файла A, чтобы удалить все обрабатываемые в данный момент строки и установить смещение обратно на 0.
Безусловно, программа будет быстрее открывать и искать файл, чем открывать и перезаписывать. Это обсуждение предполагает, что у вас есть контроль над программой B, конечно. Я не знаю, так ли это, но могут быть другие возможные решения, если вы предоставите дополнительную информацию.
Чтобы удалить строки из исходного файла, используйте параметр -i с командой sed. Если вы не хотите удалять строки из исходного файла, вы можете перенаправить вывод команды sed в другой файл.
Как удалить одну строку в Linux?
- Нажмите клавишу Esc, чтобы перейти в обычный режим.
- Поместите курсор на строку, которую хотите удалить.
- Введите dd и нажмите Enter, чтобы удалить строку.
Как удалить первую строку в Unix?
- Удалить первую строку файла sed ‘1d’.
- Удалить первую и третью строки файла sed ‘1d3d’.
Как удалить первые 10 строк в Unix?
Удалить первые N строк файла на месте в командной строке unix
- Параметры sed -i и gawk v4.1 -i -inplace в основном создают временный файл за кулисами. IMO sed должен быть быстрее, чем tail и awk. – …
- tail для этой задачи в несколько раз быстрее, чем sed или awk . (конечно, не подходит для этого вопроса по-настоящему на месте) thanasisp 22 сен.
Как удалить последние 10 строк в Unix?
Удалить последние N строк файла в Linux
Как удалить линию между двумя шаблонами Unix?
- Используйте следующую команду, чтобы удалить строки, лежащие между ШАБЛОН-1 и ШАБЛОН-2, исключая строки, содержащие эти шаблоны: …
- Используйте следующую команду, чтобы удалить строки, лежащие между ШАБЛОН-1 и ШАБЛОН-2, включая строки, содержащие эти шаблоны: …
- Чтобы удалить все строки после ШАБЛОНА-2, используйте это.
Как удалить строку в CMD?
2 ответа. Клавиша Escape (Esc) очистит строку ввода. Кроме того, нажатие Ctrl+C переместит курсор на новую пустую строку.
Как удалить строку grep?
Чтобы удалить общие линии между двумя файлами, вы можете использовать команду grep , comm или join. grep работает только с небольшими файлами. Используйте -v вместе с -f . Отображает строки из файла1, которые не совпадают ни с одной строкой в файле2.
В чем разница между восстановлением и удалением?
Команда «Восстановить» (y) идентична команде «Удалить» (d), за исключением того, что она не удаляет текст из рабочего буфера. Редактор vim помещает копию извлеченного текста в буфер общего назначения. Затем вы можете использовать команду «Поместить», чтобы поместить другую копию в другое место рабочего буфера.
Как очистить файл в Linux?
- Чтобы удалить один файл, используйте команду rm или unlink, за которой следует имя файла: unlink filename rm filename. …
- Чтобы удалить сразу несколько файлов, используйте команду rm, за которой следует имя файла, разделенное пробелом. …
- Используйте rm с параметром -i для подтверждения каждого файла перед его удалением: rm -i имя(я) файла(ов)
Как редактировать строки в vi?
Как удалить первую строку в Python?
Что делает SED 1d?
3 ответа. В sed : опция -i будет редактировать входной файл на месте. «1d» удалит первую строку входного файла.
Как вставить первую строку в Unix?
Используйте параметр вставки ( i ) команды sed, который вставит текст в предыдущую строку. Также обратите внимание, что некоторые реализации sed, отличные от GNU (например, в macOS), требуют аргумента для флага -i (используйте -i ", чтобы получить тот же эффект, что и с GNU sed").
редактор потоковой передачи (sed) — важный инструмент при работе с анализом и преобразованием текста в системах на базе nix. Он используется для поиска, фильтрации, подстановки текста и манипуляций с текстом, таких как вставка, удаление, замена и поиск в текстовых файлах.
В большинстве дистрибутивов Linux команда sed предустановлена, и вы можете проверить ее с помощью следующих команд, которые покажут двоичное расположение команды и версию.
В этой статье я покажу вам, как удалить строки из файла с помощью команды sed с помощью примера файла, содержащего 7 строк. Я собираюсь использовать этот файл в демонстрационных целях.
Как удалить строку из файла
Чтобы удалить строку из файла, вы можете использовать приведенную ниже команду. Вы должны заменить «N» номером строки, а «d» — удалить строку.
Если вам нужно удалить четвертую строку из файла, вы должны заменить N=4 .
Удалить строку из файла
Как удалить первую и последнюю строку из файла
Вы можете удалить первую строку из файла, используя тот же синтаксис, что и в предыдущем примере. Вы должны указать N=1, чтобы удалить первую строку.
Чтобы удалить последнюю строку из файла, используйте приведенную ниже команду со знаком ($), обозначающим последнюю строку файла.
Удалить первую и последнюю строки из файла
Как удалить диапазон строк из файла
Вы можете удалить диапазон строк из файла. Допустим, вы хотите удалить строки с 3 по 5, вы можете использовать приведенный ниже синтаксис.
- M – номер начальной строки
- N – номер конечной строки.
Чтобы действительно удалить, используйте следующую команду.
Удалить диапазон строк из файла
Вы можете использовать ! символ для отмены операции удаления. Это удалит все строки, кроме заданного диапазона (3-5).
Отменить операцию
Как удалить пустые строки из файла
Чтобы удалить все пустые строки из файла, выполните следующую команду. Важно отметить, что при использовании этой команды пустые строки с пробелами не удаляются. Я добавил пустые строки и пустые строки с пробелами в свой тестовый файл.
Строки с не удаленными пробелами
На изображении выше видно, что пустые строки удаляются, но строки с пробелами не удаляются. Чтобы удалить все строки, включая пробелы, вы можете запустить следующую команду.
Строки с удаленными пробелами
Как удалить строки, начинающиеся со слов в файле
Чтобы удалить строку, начинающуюся с определенного слова, выполните следующую команду, где символ ^ обозначает начало слова, за которым следует само слово.
Чтобы удалить строку, заканчивающуюся определенным словом, выполните следующую команду. Слово, которое нужно удалить, за которым следует символ $, приведет к удалению строк.
Удалить строку, начинающуюся со слов в файле
Как внести изменения непосредственно в файл
Чтобы внести изменения непосредственно в файл с помощью sed, необходимо передать флаг -i, который внесет изменения непосредственно в файл.
Мы подошли к концу статьи. Команда sed будет играть важную роль, когда вы работаете с любыми файлами. В сочетании с другими утилитами Linux, такими как awk и grep, с помощью sed можно делать больше.
Читайте также: