我正在使用Linux(Raspberry Pi)和bash。我正在使用Pi从Dell iDRAC中提取IPMI传感器信息。我设法将传感器信息提取到一个txt文件中,如下所示:
Fan1 RPM | 2400.000 | RPM | ok | na | 600.000 | 840.000 | na | na | na
Fan2 RPM | 2400.000 | RPM | ok | na | 600.000 | 840.000 | na | na | na
Fan3 RPM | 2400.000 | RPM | ok | na | 600.000 | 840.000 | na | na | na
Fan4 RPM | 2280.000 | RPM | ok | na | 600.000 | 840.000 | na | na | na
Fan5 RPM | 2400.000 | RPM | ok | na | 600.000 | 840.000 | na | na | na
Fan6 RPM | 2520.000 | RPM | ok | na | 600.000 | 840.000 | na | na | na
Inlet Temp | 11.000 | degrees C | ok | na | -7.000 | 3.000 | 42.000 | 47.000 | na
Exhaust Temp | 18.000 | degrees C | ok | na | 3.000 | 8.000 | 70.000 | 75.000 | na
Temp | na | | na | na | na | na | 0.000 | na | na
Temp | na | | na | na | na | na | 0.000 | na | na
我想要实现的目的是提取第二列中的值,例如Fan1 RPM值2400.000,并将其转储到文件中,例如fan1.txt
我猜想使用sed这样的方法是可行的,但是我在这个领域还是个新手。
答案 0 :(得分:1)
使用Grep作为值并将其剪切。
grep "Fan1 RPM" input_file | cut -d'|' -f2 > fan1.txt
您还可以通过tr -d ' '
或tr -d '[:space:]
用管道将其删除以删除(空白)。
答案 1 :(得分:1)
每当您谈论带有“列”(字段)的输入时,您要使用的工具都是awk,而不是grep或sed,因为awk是专为在字段上工作而其他工具却没有的。 / p>
$ awk -F' *[|] *' '$1=="Fan1 RPM"{print $2}' file
2400.000
$ awk -F' *[|] *' '($1=="Inlet Temp") && ($7 >= 3) {print $6, $9, $10}' file
-7.000 47.000 na
或仅转换为CSV以便可以被Excel等读取:
$ awk -F' *[|] *' -v OFS=',' 'NF{$1=$1;print}' file
Fan1 RPM,2400.000,RPM,ok,na,600.000,840.000,na,na,na
Fan2 RPM,2400.000,RPM,ok,na,600.000,840.000,na,na,na
Fan3 RPM,2400.000,RPM,ok,na,600.000,840.000,na,na,na
Fan4 RPM,2280.000,RPM,ok,na,600.000,840.000,na,na,na
Fan5 RPM,2400.000,RPM,ok,na,600.000,840.000,na,na,na
Fan6 RPM,2520.000,RPM,ok,na,600.000,840.000,na,na,na
Inlet Temp,11.000,degrees C,ok,na,-7.000,3.000,42.000,47.000,na
Exhaust Temp,18.000,degrees C,ok,na,3.000,8.000,70.000,75.000,na
Temp,na,,na,na,na,na,0.000,na,na
Temp,na,,na,na,na,na,0.000,na,na
答案 2 :(得分:0)
请您尝试以下。
awk 'match($0,/Fan1 RPM +\| +[0-9]+\.[0-9]+/){val=substr($0,RSTART,RLENGTH);sub(/.* /,"",val);print val}' Input_file
答案 3 :(得分:0)
ipmitool -I lanplus -H BMC_IP -U BMC_USER -P BMC_PASS传感器读取'Fan1 RPM'| awk'{print $ NF}'