Как заменить текст между двумя маркерами в файле фрагментом текста из другого файла?

Только, чтобы быть уверенным я начал бы проверять основы:

  • Можно ли проверить с помощью ping-запросов другую машину? Если не Вы, вероятно, сталкиваетесь с сетевой проблемой.
  • Можете Вы telnet, который nfs порта использует на сервере? Если не затем, возможно, проблема брандмауэра или неверная конфигурация nfs. Для наблюдения информации о порте, можно использовать команду (в nfsserver):

    rpcinfo -p
    

Если теми вещами является прямо тогда попытка (от клиента nfs):

   showmount -e *.28

Необходимо видеть, что/myfolder, экспортируемый в любую сеть *. Если не затем существует проблема с конфигурацией сервера nfs.

PD: Я думаю, что необходимо добавить опцию _netdev к fstab строке, таким образом, она не пытается сделать монтирование, пока сеть не готова. Так или иначе, если ручное монтирование перестало работать, это не проблема.

7
01.10.2015, 05:37
3 ответа

Ed является стандартным редактором, потому что вы можете использовать его для разработки скриптов редактирования и позволить ему делать свою работу, как вы тестировали ранее, интерактивно. Для небольших файлов вроде .bashrc или любого текста кода, редактор Ed выполняет свою работу, потому что читает весь файл в одну спешку и работает с буфером. По этой же причине не стоит использовать ed для больших файлов, таких как лог-файлы.

Но со скриптом ed ваша работа выполняется в кратчайшие сроки:

ed ~/.bashrc<<EOF
/^# aliases
+,/^# end aliases/-1d
-r !sed -n '/^# aliases/,/^# end aliases/p' stuff-to-place-in-bashrc.txt|grep -v '^#'
w
q
EOF

Я использую подобные скрипты для автоматической настройки конфигурационных файлов, таких как als .asoundrc для различных сред, в которые я беру свой ноутбук.

Лучший документ об ed поставляется в виде простой ручной страницы из очень крутой системы PLAN9. Я перевел его на ed.ps постскриптумный документ. Если вас интересует PLAN9, вам следует проверить 9front и http://cat-v.org/, так как оригинальная версия bell labs все еще поддерживается, но имеет очень простую файловую систему.

Последнее слово о editor wars, emacs, vim и тому подобное: правила acme!

9
27.01.2020, 20:16

Следующее близко к этому. И странно.

: if; { code; } && {
    code
}

Лично мне никогда не нравилось...

if true; then
more;fi

... сформировать себя. Мне нравится, когда управляющие слова ведут . Мне всегда казалось странным, что превалирующая ..., тогда форма вообще возникла.

if    this && that
then  do these things too
else  i will probably get upset
fi

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

-121--38923-

Чтобы сделать это полностью в оболочке:

while IFS="|" read -r im st se nu co ac
do
    printf '{ "%s":"%s", "%s":"%s", "%s":"%s", "%s":"%s", "%s":"%s", "%s":"%s" }\n' \
        IMSI           "$im" \
        Status         "$st" \
        ServiceType    "$se" \
        Number         "$nu" \
        ConnectionType "$co" \
        ActivationData "$ac"
done < input > output
-121--254323-
set /^\#aliases/  /^\#end\ aliases/
sed -ne"$1,$2"'s/\\\{0,1\}/&&/gp' <stuff_to_place...rc |
sed -e"$1,$2c\" -f- ./infile >./outfile

Если вы хотите изменить файл на месте ed является очень хорошим решением. Если вы хотите редактировать его в потоке, используйте sed . Избегайте sed -i .

2
27.01.2020, 20:16

Конечно, вы можете сделать это с помощью ed , без дополнительных инструментов:

ed -s stuff_to_place.txt<<\IN
1,/# aliases/d
/# end aliases/,$d
,d
.r /home/username/.bashrc
/# aliases/x
.t.
.,/# end aliases/-d
,p
q
IN

если вы ' Если результат вас устраивает, замените , p на w /home/username/.bashrc, чтобы записать изменения в ~ / .bashrc (обратите внимание на полный путь используется с r и w ; вы можете просто использовать .bashrc , если он находится в cwd ).
Как это работает: сначала мы d удаляем ненужные строки из stuff_to_place.txt . Затем мы удаляем оставшиеся (псевдонимы) с помощью , d . Текстовый буфер теперь пуст, а вырезанный буфер содержит нужные нам строки. Затем мы r вставляем содержимое .bashrc в текстовый буфер, помещаем содержимое вырезанного буфера ( x ) после / # aliases / , продублируйте последнюю вставленную строку ( .t. ), затем удалите из дублированной строки до, но не включая / # end aliases / и, наконец, p rint или w обряд изменения и q uit.

0
27.01.2020, 20:16

Теги

Похожие вопросы