Как вставить строку из файла A выше ПЕРВОЙ СТРОКИ в файле B

Вывод вашего терминала rfkill list показывает следующую проблему:

Ядро GNU / Linux загружает модуль ядра acer_wmi , даже если вы НЕ используете оборудование Acer.

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

Однако вы используете адаптер Intel, а не сетевой адаптер от Acer.

Таким образом, модуль acer_wmi необходимо занести в черный список (= предотвратить его запуск во время загрузки).

Скопируйте и вставьте следующую команду в Терминал и затем нажмите ENTER :

gksudo gedit /etc/modprobe.d/blacklist.conf

С помощью редактора gedit прокрутите вниз и ДОБАВИТЬ следующую строку конфигурации в файл /etc/modprobe.d/blacklist.conf :

blacklist acer_wmi

Используя редактор gedit, СОХРАНИТЕ изменение в /etc/modprobe.d/blacklist .conf файл.

Затем ПЕРЕЗАГРУЗИТЕСЬ и еще раз проверьте беспроводную связь. Эта операция с черным списком должна сделать изменение постоянным даже после перезагрузки.

Это должно заставить ядро ​​Linux перестать загружать модуль acer_wmi , , что, вероятно, заставляет ядро ​​мягко блокировать ваш беспроводной адаптер.

Интерфейс acer-wireless является недопустимым беспроводным интерфейсом на вашем компьютере , поскольку вы не используете оборудование ACER.

2
04.08.2016, 19:08
5 ответов

Ваша команда

$ sed -n "1,1p" originalFile >>splitFile

добавит идентификатор в конец splitFile , поскольку >> сообщает shell, чтобы добавить поток в файл. Это также очень медленно, так как sed перед выходом обработает все 80 миллионов строк originalFile .

После разделения у вас будет около 160 файлов с именами xaa , xab , xac и т. Д. Давайте добавим к ним заголовок из исходного файла. по шагам:

head -n 1 originalFile >id_line.txt

for f in x??; do
  cat id_line.txt "$f" >tmpfile && mv tmpfile "$f"
done

rm id_line.txt

Первая команда извлекает первую строку из originalFile в свой собственный файл, id_line.txt .

Цикл перебирает все сгенерированные файлы, предполагая, что вы использовали split с префиксом по умолчанию и т. Д., И объединяет id_line.txt и разделенные файлы во временный файл с именем tmpfile . Если все пойдет хорошо, tmpfile заменит разделенный файл.

Последняя строка удаляет id_line.txt , который теперь выполнил свою задачу.

1
27.01.2020, 22:11

Вот так просто.

(head -n1 fileA.txt; cat fileB.txt) >result.tmp

Файл result.tmp будет файлом FileB со строкой FileA над его первой строкой.

Когда вы видите изменения, вы как будто хотите переместить result.tmp в fileB.txt.

В вопросе вы не указываете, какую строку файла A вы хотите вставить в файл B, поэтому я предполагаю, что вам нужна первая строка.

1
27.01.2020, 22:11

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

LINE_TO_INSERT=$(head -1 originalFile)
sed -i "1s/^/${LINE_TO_INSERT/\\/\\\\}\n/" segment??
0
27.01.2020, 22:11

Попробуйте захватить содержимое splitFile с помощью cat перед его перезаписью.

echo -e "$(sed -n 1,1p originalFile)\n$(cat splitFile)" > splitFile

Это легко читать, но при работе с большими файлами он может стать дорогостоящим.

0
27.01.2020, 22:11

Попробуйте использовать sed

$ sed -i "1i$(sed -n 1p originalFile)" splitFile
  • 1i Вставьте следующий текст в строку 1 файла.
  • $ (sed -n 1p originalFile) получить самую первую строку исходного файла
0
27.01.2020, 22:11

Теги

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