我正在尝试在BASH中的以下示例中提取安装点ad0
和ad4
。
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
做到的方法。
它确保仅使用Master
或Slave
的ad
表格。
arr=($(awk '/(Master|Slave): +ad/ {print $2}' file))
echo ${arr[0]}
ad0
echo ${arr[1]}
ad4
sed -n '/ad[[:digit:]]+/p' file