从Bash中的Atacontrol输出中提取安装点



我正在尝试在BASH中的以下示例中提取安装点ad0ad4

atacontrol list ATA channel 0: Master: ad0 <ST9500530NS/SN04> SATA revision 2.x Slave: no device present ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <UNIGEN FLASH/30/06/03> ATA/ATAPI revision 0 Slave: no device present ATA channel 3: Master: no device present Slave: no device present ATA channel 4: Master: no device present Slave: no device present

我试图将安装点" AD*"提取到一个数组中,该数组将进一步用于其他事物。这是将使用此数组的Shell脚本的一部分。

感谢您对多个解决方案的帮助。

您只需使用grep -o和字符类即可获得安装点:

grep -o ad[0-9]* file

输出:

$ grep -o ad[0-9]* dat/atacntl.txt
ad0
ad4

如果您想要数组中的值:

devlist=( $(atacontrol list | grep -o ad[0-9]*) ) 

这是awk做到的方法。
它确保仅使用MasterSlavead表格。

arr=($(awk '/(Master|Slave): +ad/ {print $2}' file))
echo ${arr[0]}
ad0
echo ${arr[1]}
ad4
sed -n '/ad[[:digit:]]+/p' file  

相关内容

  • 没有找到相关文章

最新更新