Вставить информацию командной строки в указанную строку файла

Проблема связана с нестабильным драйвером сетевой карты(r8169)и не связана с конфигурацией сети.

Действия по установке стабильного драйвера описаны в руководстве Hetzner(ссылка)

0
26.11.2020, 15:17
2 ответа

Попробуйте:

sed '2i echo test > /var/tmp/file' infile

2iговорит вставить текст во вторую строку.


ваше собственное решение также должно работать, но поскольку в вашем тексте есть /, которые вы хотите добавить, и сам sedтакже использует символ /для замены символа, поэтому они будут конфликтовать друг с другом.

У вас есть два способа это исправить:

  1. изменить символ замены sed /на что-то другое, чего нет во входном файле:

    sed '2 s:^:echo test > /var/tmp/file\n:' infile
    
  2. избежать всех /символов из вашего текста, который вы собираетесь добавить в свой файл.

    sed '2 s/^/echo test > \/var\/tmp\/file\n/' infile
    

добавьте переключатель -iдля замены места -в вашу команду, когда вы будете довольны результатом.

sed -i '2 s/^/echo test > \/var\/tmp\/file\n/' infile
3
18.03.2021, 22:47

При этом нет необходимости экранировать какие-либо символы. Команда чтения файла rпоместит содержимое файла после указанного номера строки, в данном случае после Ине #1.

$ echo 'echo test > /var/tmp/file' \
| sed -i '1r /dev/stdin' file
0
18.03.2021, 22:47

Теги

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