Замените все строки между двумя шаблонами (включительно) с содержимым файла

Это обновление / постоянное разрешение ситуации. Или, по крайней мере, это было для меня. Я продолжал сражаться с этой проблемой в течение нескольких месяцев, пытаясь заставить Uubuntu 17.10 работать на моей поверхности pro 3. Ничего не работало. Я следил за решениями, рекомендованными в предыдущем посте, и в основном использовал внешний адаптер Wi-Fi, который работал нормально. Три наиболее раздражающие части: 1. отключение сетевого драйвера, как рекомендовано выше, также отключает Bluetooth, поскольку драйвер обрабатывает оба. 2. SP3 имеет только один встроенный USB-порт, поэтому включение внешнего драйвера wifi в него означает, что я не мог использовать USB для чего-либо еще, не отключаясь от Интернета. 3. Должен объяснить всем и их матери, почему у меня была гигантская антенна, торчащая из моего одного и только порта USB, была раздражающей и быстро поставленной.

После нескольких месяцев работы я нашел решение, которое работает для меня. Вернее ... решение. Один из них не сделал этого трюка. Но три вместе сделали это возможным:

отключить рандомизацию Mac.

Ubuntu GNOME 17.04: wi-fi не работает - MAC-адрес продолжает меняться?

отключить рандомизацию Mac.

NDISwrapper is оболочку, которую вы можете использовать для переноса оконных драйверов, чтобы они могли легче общаться с операционной системой Linux.

Ubuntu GNOME 17.04: wi-fi не работает - MAC-адрес продолжает меняться?

скачать WICD и DISABLE network-manager:

13], я попытался полностью удалить сетевой менеджер, как это было рекомендовано WICD. Проблема в том, что деинсталляция сетевого менеджера также удалила центр управления единством. aka больше никаких настроек для чего-либо. поэтому я заново установил единый центр управления, чтобы узнать, что с ним был установлен сетевой менеджер. Исправить? Остановите сетевой ящик и отключите его, но не удаляйте его.

http://xmodulo.com/disable-network-manager-linux.html

Опять же, я пробовал все эти три вещи самостоятельно, и никто, кажется, не исправил проблему , Все они показали МАЛЕНЬКИЕ улучшения, но ничего хорошего. Но, как я уже сказал, со всеми тремя на месте, мой wifi хорош как новый. У меня есть Bluetooth и настройки и мой USB-порт. Это хак, черт возьми, но теперь он отлично работает. Надеюсь, это поможет кому-то другому.

3
задан 29 January 2018 в 21:38

3 ответа

Вы близки, я думаю, ваша главная проблема в том, что $(cat file2) будет рассматриваться как буквальный в одинарных кавычках - вы должны использовать встроенную команду r:

[ f5] Очередь содержимого имени файла для чтения и вставки в выходной поток в конце текущего цикла или при чтении следующей строки ввода. Обратите внимание: если имя файла не может быть прочитано, оно обрабатывается как пустой файл без указания ошибки.

Итак:

sed '
  /foo/{
    :a
    N
    /\nbar$/!ba
    r file2
    d
  }
' file1

Если вы хотите пререкаться с этим в один лайнер, вам нужно будет сделать трюк, чтобы не допустить, чтобы sed обрабатывал все после r как часть имени файла:

sed -e '/foo/{:a; N; /\nbar$/!ba; r file2' -e 'd;}' file1
2
ответ дан 22 May 2018 в 15:13
  • 1
    +1, поскольку он работает для общего примера выше. Бог знает, почему это не сработало для моих xml-файлов .. удалось найти другой способ решить мою проблему, хотя спасибо за помощь. – storm 31 January 2018 в 18:04

Вы близки, я думаю, ваша главная проблема в том, что $(cat file2) будет рассматриваться как буквальный в одинарных кавычках - вы должны использовать встроенную команду r:

r filename Очередь содержимого имени файла для чтения и вставки в выходной поток в конце текущего цикла или при чтении следующей строки ввода. Обратите внимание: если имя файла не может быть прочитано, оно обрабатывается как пустой файл без указания ошибки.

Итак:

sed ' /foo/{ :a N /\nbar$/!ba r file2 d } ' file1

Если вы хотите пререкаться с этим в один лайнер, вам нужно будет сделать трюк, чтобы не допустить, чтобы sed обрабатывал все после r как часть имени файла:

sed -e '/foo/{:a; N; /\nbar$/!ba; r file2' -e 'd;}' file1
2
ответ дан 17 July 2018 в 21:58

Вы близки, я думаю, ваша главная проблема в том, что $(cat file2) будет рассматриваться как буквальный в одинарных кавычках - вы должны использовать встроенную команду r:

r filename Очередь содержимого имени файла для чтения и вставки в выходной поток в конце текущего цикла или при чтении следующей строки ввода. Обратите внимание: если имя файла не может быть прочитано, оно обрабатывается как пустой файл без указания ошибки.

Итак:

sed ' /foo/{ :a N /\nbar$/!ba r file2 d } ' file1

Если вы хотите пререкаться с этим в один лайнер, вам нужно будет сделать трюк, чтобы не допустить, чтобы sed обрабатывал все после r как часть имени файла:

sed -e '/foo/{:a; N; /\nbar$/!ba; r file2' -e 'd;}' file1
2
ответ дан 23 July 2018 в 22:35

Другие вопросы по тегам:

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