Как разделить строку на две подстроки одинаковой длины с помощью bash?

Ваш модуль cfg80211 и ваше работающее ядро ​​несовместимы. Внутренние программные интерфейсы в ядре меняются довольно часто, поэтому при обновлении ядра вам необходимо синхронизировать модули. (Исключение составляют несколько модулей вне дерева, которые специально поддерживаются для работы с большим диапазоном версий ядра.)

Если вы обновили пакет ядра после последней перезагрузки, вероятно, у вас есть работающее ядро, которое больше не работает. соответствует версиям ядра на диске, и поэтому modprobe пытается загрузить модуль для более свежего ядра. Убедитесь, что вы не удалили пакет linux-image-… , соответствующий работающему ядру. Вы можете проверить работающую версию ядра с помощью команды uname -r ; в соответствии с соглашением об именах пакетов Debian необходимо установить пакет linux-image - $ (uname -r) .

Если вы удалили пакет, вам придется либо переустановить его, либо перезагрузить. Чтобы переустановить, проверьте, есть ли у вас пакет в / var / cache / apt / archives . Если вы этого не сделаете, поищите пакет на snapshot.debian.org (с версией, соответствующей версии пакета linux-image-… , т.е. второй столбец dpkg -l , который не всегда точно соответствует версии, содержащейся в имени).

12
31.05.2019, 00:23
4 ответа

Использование расширения параметров и арифметики оболочки:

Первая половина переменной будет:

${var:0:${#var}/2}

Вторая половина переменной будет:

${var:${#var}/2}

, чтобы можно было использовать:

printf '%s\n' "${var:0:${#var}/2}" "${var:${#var}/2}"

Вы также можете использовать следующую команду awk:

awk 'BEGIN{FS=""}{for(i=1;i<=NF/2;i++)printf $i}{printf "\n"}{for(i=NF/2+1;i<=NF;i++){printf $i}{printf "\n"}}'

$ echo abcdef | awk 'BEGIN{FS=""}{for(i=1;i<=NF/2;i++)printf $i}{printf "\n"}{for(i=NF/2+1;i<=NF;i++){printf $i}{printf "\n"}}'
abc
def
17
27.01.2020, 19:54

Другой awkскрипт может быть:

echo abcdef | awk '{print substr($0,1,length/2); print substr($0,length/2+1)}'
7
27.01.2020, 19:54

Использование split, здесь строки и подстановка команд:

var=abcdef
printf '%s\n' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"
8
27.01.2020, 19:54

Питон 3

s = input()  # Take one line of input from stdin.
x = len(s) // 2  # Get middle of string. "//" is floor division
print(s[:x], s[x:], sep="\n")  # Print "s" up to "x", then "s" past "x", joined on newlines.

Например,

$ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="\n")'
abc
def

Если длина строки не является четным числом, вторая строка будет длиннее. Например.

$ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="\n")'
abc
defg
1
27.01.2020, 19:54

Теги

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