скопируйте шаблон awk и вставьте его в следующую строку

I cannot connect to the Wi-Fi because it says that a firmware is missing. I didn't have this problem when I have Lubuntu installed.

¿Por qué?

La tarjeta wifi BCMxxx usa un firmware non-freey la imagen oficial de Debian no incluye el software non-free, usando la imagen oficial puede cargar el firmware faltante desde un dispositivo USB fat32 formateado después de extraer el firmware de ] aquí(exactamente firmware -brcm80211)

Omitió estos pasos durante la instalación del sistema, puede hacer que el wifi funcione siguiendo la respuesta de telecoM a través del paquete firmware-brcm80211o siguiendo los documentos de Debian instalando el broadcom-sta-dkmsluego cargando el módulo no -libre wl.

No tienes problemas para usar Lubuntu porque incluye el firmware non-free.

Hay disponible una imagen no oficial de Debian que incluye el software no -gratuito para que el wifi funcione durante la instalación del sistema.

Imágenes gratuitas no oficiales no -que incluyen paquetes de firmware

2
03.07.2019, 23:38
3 ответа

Учитывая ваш комментарий о том, что вы хотите обновить файлы in this directory and other directories next to it., давайте предположим, что у вас есть каталог, в котором есть другие каталоги, в которых находятся файлы, которые вы хотите изменить. Вот как вы это сделаете после того, как cd -перейдет в этот каталог верхнего уровня:

find. -maxdepth 2 -mindepth 2 -exec awk -i inplace '{print} $1==8852{$1=9997; print}' {} +

В приведенном выше примере используется GNU awk для редактирования «на месте» и GNU find для +. Если у вас нет инструментов GNU, при условии, что ваши имена файлов не содержат символы новой строки:

tmp=$(mktemp)
while IFS= read -r file; do
    awk '{print} $1==8852{$1=9997; print}' "$file" > "$tmp" &&
    mv "$tmp" "$file"
done < <(find. -maxdepth 2 -mindepth 2) )
rm -f "$tmp"

Если вы не хотите изменять метку времени для файлов, не содержащих 8852, тогда:

tmp=$(mktemp)
while IFS= read -r file; do
    awk '$1==8852{f=1; exit} END{exit !f}' "$file" &&
    awk '{print} $1==8852{$1=9997; print}' "$file" > "$tmp" &&
    mv "$tmp" "$file"
done < <(find. -maxdepth 2 -mindepth 2) )
rm -f "$tmp"
0
27.01.2020, 22:16

Итак, у вас есть много файлов, и в них есть одна строка в следующем формате.

8852 0.53451 0.55959 0.65494 0.36047

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

8852 0.53451 0.55959 0.65494 0.36047

9997 0.53451 0.55959 0.65494 0.36047

Если я правильно отвечу на этот вопрос, нижеследующее должно сработать.

for file in ``find. -name "*.txt"``; do awk '{print "\n9997 "$2,$3,$4,$5}' $file >> $file; done

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

Извините, если я неправильно понял ваш вопрос.

-1
27.01.2020, 22:16

Я бы посоветовалawk '{print; $1 = 9997; print}'

$ echo '8852 0.53451 0.55959 0.65494 0.36047' | awk '{print; $1 = 9997; print}'
8852 0.53451 0.55959 0.65494 0.36047
9997 0.53451 0.55959 0.65494 0.36047

Вы упомянули о применении преобразования к нескольким файлам :это можно сделать либо с помощью цикла

for f in *.txt; do  awk '{print; $1 = 9997; print}' "$f"; done

или (рекурсивно )с использованиемfind

find. -name '*.txt' -exec awk '{print; $1 = 9997; print}' {} \;

, однако, если у вас нет последней версии GNU Awk с расширением -i inplace, результаты будут объединены и записаны в стандартный вывод.

2
27.01.2020, 22:16

Теги

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