我有一个文件,它是这样的:
Device: name1
random text
Device: name2
random text
Device: name3
random text
我有一个变量:MainComputer
我想要得到的(每个名字,我有40个名字):
MainComputer -> name1
MainComputer -> name2
MainComputer -> name3
我有的:
var="MainComputer"
var1=$(awk '/Device/ {print $3}' file)
echo "$var -> $var1"
这仅给出箭头“->”和第一个变量的链接,我希望它们用于其他40个变量...
不管怎么说,还是要谢谢你!
让我介绍你awk
:
$ awk '/Device/ {print $2}' file
name1
name2
name3
这将在包含的行上打印第二个字段Device
。如果要检查它们是否以Device开头,可以使用^Device:
。
要获得您在已编辑问题中提到的输出,请使用以下命令:
$ awk -v var="MainComputer" '/Device/ {print var, "->", $2}' a
MainComputer -> name1
MainComputer -> name2
MainComputer -> name3
它通过提供变量名-v
,然后打印该行。
查找有关脚本的一些注释:
file="/scripts/file.txt"
while read -r line
do
if [$variable="Device"]; then # where does $variable come from? also, if condition needs tuning
device='echo "$line"' #to run a command you need `var=$(command)`
echo $device #this should be enough
fi
done <file.txt #why file.txt if you already stored it in $file?
检查bash字符串是否相等,以查看[[ "$variable" = "Device" ]]
语法(或类似语法)如何。
另外,您可以说while read -r name value
,所以$value
将从第二个值开始包含。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句