Является ли замена конкретной строки в файле с помощью сценария bash, возможного в VIM или EX?

Я хотел бы изменить конкретную строку, например строку 5, в файле, используя конструкцию EOEX как я могу достичь своей цели? Фрагмент кода, который я использую для достижения своей цели, выглядит следующим образом:

 #!/bin/bash S=0.030 F=0.150 N=30 DIFF=`echo "scale=3; $F - $S" | bc -l` dw=`echo "scale=3; $DIFF / $N" | bc -l` is=`echo "scale=3; $S / $dw" | bc -l` if=`echo "scale=3; $F / $dw" | bc -l` ex ~/Desktop/Dropbox/MATLAB/FFT.m <<EOEX :5s/for*/for i = $S:$dw:$F/g :x EOEX 

Я сделал некоторые исследования и узнал, что обычно EOF (конец файла) используется here scripts для перенаправления I/O на стандартный ввод определенной команды (в моем случае это ex ). Я также узнал, что до тех пор, пока ключевые слова для начала и окончания одинаковы, вместо EOF можно использовать любое слово. Моя проблема заключается в том, что вместо желаемого эффекта, который заменяет строку другим for loop инициализатора for loop в Matlab этот скрипт не удаляет строку и не добавляет строку в конце пятой строки. Для справочных целей я также добавил файл FFT.m. Приносим извинения за неудобства, вызванные абстрактностью моего вопроса ранее. Обратите внимание, что я также открыт для использования другой программы для достижения желаемого эффекта, но мне интересно, почему этого не может быть достигнуто в ex или vim . Пожалуйста, нажмите здесь для скрипта Matlab.

One Solution collect form web for “Является ли замена конкретной строки в файле с помощью сценария bash, возможного в VIM или EX?”

Чтобы изменить строку 5 файла test_file на «hello world», используя ex и конструкцию EOEX (я полагаю, что вы имеете в виду «документ здесь»):

 ex test_file << EOEX 5c hello world . wq EOEX 

Вышеупомянутое также возможно с помощью ed , хотя обратите внимание, что POSIX ed не поддерживает команду wq . Вместо этого поставьте w и q на отдельные строки.

Использование sed (версия, поддерживающая параметр -i ) немного проще:

 sed -i '15 c hello world' test_file 
  • Скопировать / вставить в SSH'd VIM из локального (Windows) буфера обмена
  • Выбрать между заданными символами в vim
  • vim sudo hack auto reload
  • Отключение мыши в Vim отключает отступ
  • Утилита автоматического копирования и вставки для Mac и Vim
  • Что создает файлы подкачки?
  • Клавиша ESC вызывает небольшую задержку в терминале из-за его поведения Alt +
  • Где найти каталог .vim?
  • vim: как записывать нормальные команды?
  • vim: автоматическая замена контекстно-зависимых заметок с помощью surround.vim
  • поддержка tmux, TERM и 256 цветов
  • Linux и Unix - лучшая ОС в мире.