Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 我如何在一行中找到一个变量并使用cut检索该值_Unix - Fatal编程技术网

Unix 我如何在一行中找到一个变量并使用cut检索该值

Unix 我如何在一行中找到一个变量并使用cut检索该值,unix,Unix,问题本质上是这样的,我需要能够在我已经从/proc/cmdline中筛选出的行中搜索变量。然后能够剪切掉这个变量的值,在这种情况下,我想剪切掉Disktype的值 *应该注意的是,这将在PXE引导环境中,因此大多数其他语言工具将不可用,并且变量和值在/proc/cmdline中的显示位置可能不同 因此,如果我使用cat out/proc/cmdline,基本上可以得到以下结果: centos-workstation-x86_64/vmlinuz initrd=centos-workstation

问题本质上是这样的,我需要能够在我已经从/proc/cmdline中筛选出的行中搜索变量。然后能够剪切掉这个变量的值,在这种情况下,我想剪切掉Disktype的值

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

因此,如果我使用cat out/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语句,该语句与抛出到Disktype中的内容相匹配,以确定在安装过程中使用哪个partition.cfg。

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

cut实际上不适合此任务:

tr " " "\n" | grep Disktype | cut -f 2 -d =
您也可以使用sed来执行此操作:


那么,你是在寻找一个特定的变量,一个集合中的任何一个,还是其他什么?您是否考虑过使用awk而不是cut,它确实更适合于此。我还没有想过使用awk。您是否考虑了利用awk的解决方案?
tr " " "\n" | grep Disktype | cut -f 2 -d =
sed -n 's/^.*Disktype=\([^ ]\+\)/\1/p'