Linux awk проблема с переводом строки в переменную - PullRequest
0 голосов
/ 20 февраля 2020

Я нашел много тем, но не могу найти что-то, соответствующее моему точному регистру ..

Когда я запускаю следующую команду в моем скрипте: sudo lshw -C disk -short | grep "/dev/", мой hdds var будет установлен в /dev/sda 32GB VMware Virtual S /dev/cdrom VMware IDE CDR10.

И я могу использовать awk для удаления "/ dev /", но я бы добавил разрыв строки с / n, чтобы при выполнении echo $hdds это показывало бы что-то вот так (вместо того, чтобы отображать все в одной строке):

sda 32GB VMware Virtual S
cdrom VMware IDE CDR10

Мне действительно удалось это сделать, но я не могу присвоить этот результат моей переменной ... Только когда у меня есть вывод, пока запуск команды live.

#!/bin/bash

hdds=`sudo lshw -C disk -short | grep "/dev/" | awk '{print $2,$4,$5,$6,$7,$8,$9}'`
hdd=`echo $hdds | awk '{split($hdds,hdd,"/dev/"); print hdd[2]; print " HEY \n"; print hdd[3]}'`
echo $hdd | awk '{print $hdd;}'

Спасибо за помощь! В настоящее время пытаюсь сделать это под Ubuntu 18.04.

1 Ответ

0 голосов
/ 21 февраля 2020

Мое лучшее предположение состоит в том, что sudo lshw -C disk -short уже производит многострочный вывод, и основная проблема, с которой вы столкнулись, заключается в том, что вы не заключаете аргумент в echo, и в этом случае все, что вам нужно:

hdd=$(sudo lshw -C disk -short | sed -n 's:/dev/::p')
echo "$hdd"

но не видя вывода sudo lshw -C disk -short и ожидаемого конечного результата, это всего лишь непроверенное предположение.

См. https://mywiki.wooledge.org/Quotes и http://mywiki.wooledge.org/BashFAQ/082 для получения информации о кавычках и тиках в вашем скрипте.

...