【发布时间】:2015-02-10 19:06:15
【问题描述】:
大家好,我有一个脚本创建的文本文件(特别是 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
我觉得我的正则表达式已经过时了(可能是因为我最初看到的例子玷污了我的“愿景”)
非常感谢任何帮助! 另外,有人知道我可以查看任何好的正则表达式引用吗?
更新: 好吧,我可以在这上面多花点时间,找到一些更好的例子,并从我的研究中得到这个:
grep -e "Product Name: HP" -e "Product Name: hp" dmidecode.txt | awk '{print}'
当我添加 '{print $NF}' 时,它只打印最后一个单词,有没有办法修改 print 以包含搜索字符串之后的所有内容而不是整行本身?
另外,我应该从一开始就注意到这一点,但我需要将输出放入变量中。
【问题讨论】:
-
您显示的代码似乎想用其他东西替换名称,而不是隔离名称。你真正想要哪个?
-
我只是想“找到”代码并将其实际放入变量中。我对 bash 还很陌生,但在 awk、sed 和 grep 方面我完全是个处女,我不理解搜索字符串和人民代码中的所有那些 "\/. 等字符...:S
-
感谢大家的帮助/建议!