Привет, ребята, у меня есть текстовый файл, который создает сценарий (в частности, dmidecode > dmidecode.txt
), и я хочу иметь возможность получить содержимое «Наименование продукта», поэтому в данном случае «Тонкий клиент HP t5740e», но это будет немного отличаться для других типов машин. Я мог бы просто использовать sed
, чтобы сосчитать до строки 44, а затем нарезать его, пока не получу то, что хочу, но я бы хотел, чтобы оно было более динамичным.
Текстовый файл:
41 Handle 0x0001, DMI type 1, 27 bytes
42 System Information
43 Manufacturer: Hewlett-Packard
44 Product Name: HP t5740e Thin Client
45 Version:
46 Serial Number: CNW1160BZ7
47 UUID: A0B86400-6BBD-11E0-8325-92EEE331A344
48 Wake-up Type: Power Switch
49 SKU Number: XL424AA#ABA
50 Family: 103C_53302C
Код, который у меня есть, кажется, не работает:
sed -c -i "s/\($TARGET_KEY *Product Name :*\).*/\1$REPLACEMENT_VALUE/" dmidecode.txt
Я чувствую, что мои регулярные выражения далеко (вероятно, потому что первоначальные примеры, на которые я смотрел, испортили мое "видение")
Любая помощь очень ценится!
Кроме того, кто-нибудь знает какие-либо хорошие ссылки на регулярные выражения, которые я могу проверить?
UPDATE:
Хорошо, я смог потратить немного больше времени на это, нашел несколько лучших примеров и получил это из своего исследования:
grep -e "Product Name: HP" -e "Product Name: hp" dmidecode.txt | awk '{print}'
Когда я добавляю '{print $NF}'
, он печатает только последнее слово, есть ли способ изменить печать, чтобы включить в нее все, что находится после строки поиска, а не всю строку?
Кроме того, я должен был отметить это с самого начала, но мне нужен вывод, чтобы перейти в переменную.