Вот часть bash
сценария, выполняющая cpuid
обнаружение в Linux (Ubuntu / Fedora):
/usr/bin/cpuid > id.txt
CPUID=id.txt
echo `grep "extended model" $CPUID` | sed 's/0x//' | awk ' { print $4 } ' > cpu.txt
a=`cat cpu.txt`
echo `grep "extended family" $CPUID`| sed 's/0x//' | awk ' { print $4 } ' > cpu.txt
a+=`cat cpu.txt`
Итак, для моего ноутбука эта часть скрипта (показанная здесь) дает 60.
Теперь, как это сделать, используя ТОЛЬКО локальные переменные, без cpu.txt
участия промежуточного файла ( )?
источник
cat
первой строке не должно быть там. Это заставляет CPUID назначать содержимое двоичного исполняемого файла, а не его вывод.СЭД
так как у меня 8 ядер, мой компьютер излучает:
tac меняет порядок строк в cpuid, так что я могу использовать ^ CPU в качестве ограничителя записи CPU, а также расширенная модель и расширенное семейство, расположенные в правильном порядке
источник
Это не оптимизирует ваши начальные команды, но точка с запятой позволяет вам соединить 2 команды, чтобы полностью избежать операции конкатенации:
Или, в зависимости от вашей ситуации:
Если вы заботитесь о новых строках, вам нужно ставить двойные кавычки до начала
$(
и после закрытия)
источник
Вот способ сделать это в
awk
(весь вывод, как сделано кодом в вашем ответе).Когда вы заканчиваете тем, что обрабатываете тот же самый ввод снова и снова, это обычно указывает, что другой подход мог бы быть лучше.
awk
идеально подходит для обработки ввода текста, как это.awk
программы намного длиннее, чем выполняемыеsed
, но их гораздо легче читать, и вы можете добавить к ним операторы печати, чтобы сделать отладку намного проще.Я оставил свои отладочные заявления в (закомментированный). Вы можете раскомментировать их, чтобы посмотреть, как работает скрипт.
Вы должны поместить
awk
программу куда-нибудь, и самое простое место в одном случае использования - это поместить все это в одну строку в кавычках вawk
командной строке.Таким образом, вам не нужно хранить его в отдельном файле или во временном файле, поэтому управление файлами не требуется, и скрипт будет работать сам по себе.
Эта программа выглядит долго, но это почти все комментарии, операторы отладки и пробелы.
источник
Пока я читаю все комментарии и постараюсь использовать их все. Как я писал NGRhodes: «к сожалению, я не эксперт в sed, awk и perl, но у меня есть некоторое первоначальное понимание.
Большое спасибо всем, кто сделал / представил эти прекрасные примеры. Я искренне надеюсь, что намного больше людей будут читать эти строки и углублять свои навыки написания сценариев!
На самом деле, я сделал коктейль из того, что вы мне все предложили:
Результат: 40651 0004-0651-0000-0000-0000-0000, чего я и ожидаю! :-)
источник