如何在一行中找到变量并使用cut来检索值

时间:2011-06-15 13:28:32

标签: unix

问题基本上就是这个,我需要能够在一行中搜索一个我已经从/ proc / cmdline中删除的变量。然后能够将此变量的值切掉(在这种情况下,我想要删除Disktype的值)。

*应该注意,这将在PXE引导环境中,因此大多数其他语言工具将不可用,并且变量和值可能与/ proc / cmdline中显示的位置不同。

所以基本上如果我拿出/ proc / cmdline,我可以得到这个:

centos-workstation-x86_64/vmlinuz initrd=centos-workstation-x86_64/initrd.img locale=en_US Disktype=Fresh

或者

rhel6-workstation-x86_64/vmlinuz initrd=rhel6-workstation-x86_64/initrd.img Disktype=Large locale=en_US 

或为PXE设置更多其他变量的任何其他变体。

*澄清这将是更大的kickstart文件的一部分

**对于那些可能想知道为什么这可能有用的人,使用这个我将在kickstart中稍后指定一个case语句,该case语句与抛入Disktype的内容相匹配,以确定在安装过程中使用的partition.cfg。 / p>

1 个答案:

答案 0 :(得分:0)

awk中,如果您正确设置记录分隔符字段分隔符,则很容易:

awk  '/Disktype/{print $2}' RS=" " FS==

cut并不适合这项任务:

tr " " "\n" | grep Disktype | cut -f 2 -d =

您也可以使用sed

来完成
sed -n 's/^.*Disktype=\([^ ]\+\)/\1/p'