Linux awk 变量换行的问题
Linux awk trouble with linebreak into a variable
我找到了很多主题,但找不到符合我的确切情况的内容..
当我 运行 在脚本中执行以下命令时:sudo lshw -C disk -short | grep "/dev/"
,我的 hdds
var 将设置为 /dev/sda 32GB VMware Virtual S /dev/cdrom VMware IDE CDR10
.
而且我可以使用 awk 删除“/dev/”,但我会用 /n 添加一个换行符,所以当我执行 echo $hdds
时,它会显示类似这样的内容(而不是在一行中显示所有内容):
sda 32GB VMware Virtual S
cdrom VMware IDE CDR10
我实际上设法做到了,但我无法将该结果分配给我的变量。只有当我在 运行 运行实时命令时获得输出时。
#!/bin/bash
hdds=`sudo lshw -C disk -short | grep "/dev/" | awk '{print ,,,,,,}'`
hdd=`echo $hdds | awk '{split($hdds,hdd,"/dev/"); print hdd[2]; print " HEY \n"; print hdd[3]}'`
echo $hdd | awk '{print $hdd;}'
感谢帮助!
目前正在尝试在 ubuntu 18.04.
下执行此操作
我最好的猜测是 sudo lshw -C disk -short
已经产生了多行输出,而您遇到的主要问题是您没有引用 echo
的参数,在这种情况下,您只需要:
hdd=$(sudo lshw -C disk -short | sed -n 's:/dev/::p')
echo "$hdd"
但没有看到 sudo lshw -C disk -short
的输出和您预期的最终输出,这只是一个未经测试的猜测。
有关脚本中引号和刻度问题的信息,请参阅 https://mywiki.wooledge.org/Quotes and http://mywiki.wooledge.org/BashFAQ/082。
我找到了很多主题,但找不到符合我的确切情况的内容..
当我 运行 在脚本中执行以下命令时:sudo lshw -C disk -short | grep "/dev/"
,我的 hdds
var 将设置为 /dev/sda 32GB VMware Virtual S /dev/cdrom VMware IDE CDR10
.
而且我可以使用 awk 删除“/dev/”,但我会用 /n 添加一个换行符,所以当我执行 echo $hdds
时,它会显示类似这样的内容(而不是在一行中显示所有内容):
sda 32GB VMware Virtual S
cdrom VMware IDE CDR10
我实际上设法做到了,但我无法将该结果分配给我的变量。只有当我在 运行 运行实时命令时获得输出时。
#!/bin/bash
hdds=`sudo lshw -C disk -short | grep "/dev/" | awk '{print ,,,,,,}'`
hdd=`echo $hdds | awk '{split($hdds,hdd,"/dev/"); print hdd[2]; print " HEY \n"; print hdd[3]}'`
echo $hdd | awk '{print $hdd;}'
感谢帮助! 目前正在尝试在 ubuntu 18.04.
下执行此操作我最好的猜测是 sudo lshw -C disk -short
已经产生了多行输出,而您遇到的主要问题是您没有引用 echo
的参数,在这种情况下,您只需要:
hdd=$(sudo lshw -C disk -short | sed -n 's:/dev/::p')
echo "$hdd"
但没有看到 sudo lshw -C disk -short
的输出和您预期的最终输出,这只是一个未经测试的猜测。
有关脚本中引号和刻度问题的信息,请参阅 https://mywiki.wooledge.org/Quotes and http://mywiki.wooledge.org/BashFAQ/082。