Я хочу удалить первую строку из нескольких текстовых файлов и заменить ее другой строкой. Есть ли способ сделать это с помощью терминала?
Я знаю, как использовать vim, есть ли способ автоматизировать его? Я хочу избежать этого вручную (как при редактировании каждого файла в отдельности).
Если возможно, я бы хотел избежать установки новых библиотек (особенно для чего-то подобного, что я считаю очень простым - но я могу ошибаться).
Заранее спасибо!
command-line
text-processing
TomTsagk
источник
источник
sed
это на самом деле то, что я искал!Ну, используя
vim
себя:Что это делает:
setline (n, text)
Ну, это функция, которая устанавливает строкуn
вtext
.call
необходим для вызова функций.bufdo
используется для повтора команды через буферы (без диапазона она действует на все буферы).wq
сохраняет и выходит из буфера. Нам нужно сделать это, прежде чем перейти к следующему буферу, поэтому эта команда связана сcall
командой using|
.-c cmd
Выполнениеcmd
- это команда в командном режиме после загрузки первого буфера.Nes
включает несовместимый, бесшумный экс-режим, что лучше для неинтерактивной обработки.Преимущества:
setline
Содержание текста может быть любым -&
вsed
тексте замены может иметь непредсказуемые последствия.источник
sed
кажется намного проще в использовании, но это действительно здорово, чтоvim
можно сделать то же самое! Большое спасибо за ваш ответ!bufdo
). Считайте, что у вас есть файлы, уже открытые и ... И показать альтернативу1s/foo/bar/
.Несколько других вариантов:
awk
(нужна относительно новая версия GNUawk
)Perl / оболочки
Shell / Coreutils
источник
Этот скрипт будет делать, как вы просили, помещая измененные файлы в новый каталог без фактического изменения оригиналов.
источник
С помощью
gawk
пример
источник
jEdit: я использую его для массового поиска и замены. Это мощный с возможностью использовать RegEx - регулярные выражения. Вы можете работать с файлами в каталоге, указывать расширения файлов, например, «.html» и так далее. И вы можете посмотреть локаль изменения кандидата в контексте в графическом интерфейсе. JEdit отлично.
jEdit доступен через центр программного обеспечения Ubuntu.
источник
Команды tail и cat сделают это легко:
Оберните их в подходящий цикл и, возможно, используйте правильный и праведный временный файл вместо жестко закодированного временного имени файла. Я считаю, что bash и другие оболочки имеют синтаксис для создания временных файлов.
Опция -n хвоста имеет две интерпретации в зависимости от того, имеет ли аргумент знак плюс. Если у него есть знак плюс, это означает, что хвост файла должен начинаться с заданного номера строки. В противном случае число - это число строк, включая последнюю строку, которую должен вывести хвост.
источник