awk -F ":" '{print $NF}'|awk -F "|" '{if ($NF > 0.040 && $NF <= 0.060 ) x[$1]++;} END {for(i in x) print(i"|less0.002""|"x[i])}'|sort -t "|" -k 1 这个命令是做什么的
时间: 2023-08-07 11:49:20 浏览: 151
这个命令是用来处理一个文本文件,其中每行包含多个用冒号(:)和竖线(|)分隔的字段。命令的作用是提取每行最后一个字段后,筛选出最后一个字段大于0.040且小于等于0.060的行,并统计每个行的第一个字段出现的次数,最后按照第一个字段排序并输出。其中:
- `awk -F ":" '{print $NF}'` 表示使用冒号作为分隔符,提取每行最后一个字段。
- `awk -F "|" '{if ($NF > 0.040 && $NF <= 0.060 ) x[$1]++;}` 表示使用竖线作为分隔符,筛选出最后一个字段大于0.040且小于等于0.060的行,并统计每个行的第一个字段出现的次数。
- `END {for(i in x) print(i"|less0.002""|"x[i])}'` 表示在处理完所有行后,按照第一个字段排序并输出,输出格式为 i"|less0.002""|"x[i]。
- `sort -t "|" -k 1` 表示使用竖线作为分隔符,按照第一个字段排序。
相关问题
os_disk_symbol=$(echo $(lsblk |grep -B1 -E "part|boot" |grep -E "^sd[a-z]+|^nvme" |awk '{print $1}') |sed 's/ /|/') non_os_disk_set=$(lsscsi -g |-E "ATA|TOSHIBA" |awk '{print $(NF-1)}' |grep -Ev $os_disk_symbol) if [[ -n $non_os_disk_set ]];then for i in $(echo "$non_os_disk_set") do rotationRate=$(smartctl -i $i |awk -F":" '/Rotation Rate/{print $2}') if [[ $rotationRate =~ "Solid State Device" ]];then echo $i |awk -F"/" '{print $3}' >> ssd_symbol_set elif [[ $rotationRate =~ "rpm" ]];then echo $i |awk -F"/" '{print $3}' >> hdd_symbol_set fi done fi
这是一个 Shell 脚本,主要作用是获取当前系统中所有硬盘的信息,并将非系统盘的硬盘区分为 SSD 和 HDD 两类,并将它们的设备符号分别保存在 ssd_symbol_set 和 hdd_symbol_set 两个文件中。具体实现步骤如下:
1. 使用 lsblk 命令获取当前系统中所有硬盘的信息,并通过 grep 命令过滤出包含 "part" 或 "boot" 字段的行,然后使用 awk 命令提取出硬盘设备符号,并使用 sed 命令将多个设备符号合并为一个正则表达式。
2. 使用 lsscsi 命令获取所有 SCSI 设备的信息,并通过 awk 命令提取出硬盘设备符号,并使用 grep 命令过滤掉系统盘的设备符号。
3. 遍历所有非系统盘的设备符号,使用 smartctl 命令获取硬盘信息,并使用 awk 命令提取出硬盘类型(SSD 或 HDD),然后将设备符号保存到对应的文件中。
最终,执行完该脚本后,可以通过查看 ssd_symbol_set 和 hdd_symbol_set 文件来获取系统中所有 SSD 和 HDD 的设备符号。
以下shell脚本是什么意思,转成python是什么样的。 if [ 1 -eq $# ] && [ "-V" == "$1" -o "-v" == "$1" ] ; then echo "TU version is:$TU_VERSION" exit 0 fi line_temp=$(cat /root/SLOT_SN.txt | head -1 | awk -F ";" '{print $1}' | grep "-") if [ -n "$line_temp" ] ; then flag=1 fi while read line_temp do if [ "$line_temp" = "" ] ; then continue fi SLOT_INFO[$num]=$(echo $line_temp | awk -F ";" '{print $1}' | tr A-Z a-z | tr -d ":") if [ $flag = 1 ] ; then LINK_ID[$num]=$(echo $line_temp | awk -F ":" '{print $2}' | awk -F ";" '{print $1}' | awk -F "-" '{print $1}' | sed 's/^0*//g') LINK_ID[$num]=$((LINK_ID[$num]+0)) SLOT_ID[$num]=$(echo $line_temp | awk -F ":" '{print $2}' | awk -F ";" '{print $1}' | awk -F "-" '{print $2}' | sed 's/^0*//g') SLOT_ID[$num]=$((SLOT_ID[$num]+0)) else SLOT_ID[$num]=$(echo $line_temp | awk -F ":" '{print $2}' | awk -F ";" '{print $1}' | sed 's/^0*//g') SLOT_ID[$num]=$((SLOT_ID[$num]+0)) fi #获取UUT_SN UUT_SN[$num]=$(echo $line_temp | awk -F ":" '{print $3}' | awk -F ";" '{print $1}') ((num++)) done </root/SLOT_SN.txt
这个shell脚本的主要作用是从/root/SLOT_SN.txt文件中读取数据,将其解析并存储到相应的数组中。
转成python代码可能会像这样:
```python
import os
if len(sys.argv) == 2 and (sys.argv[1] == "-V" or sys.argv[1] == "-v"):
print("TU version is:{}".format(TU_VERSION))
exit(0)
with open('/root/SLOT_SN.txt', 'r') as f:
num = 0
SLOT_INFO = []
LINK_ID = []
SLOT_ID = []
UUT_SN = []
flag = 0
line_temp = f.readline().split(';')[0].strip().lower()
if '-' in line_temp:
flag = 1
for line in f.readlines():
line_temp = line.strip()
if line_temp == "":
continue
SLOT_INFO.append(line_temp.split(';')[0].lower().replace(':', ''))
if flag == 1:
link_id = line_temp.split(':')[1].split(';')[0].split('-')[0].lstrip('0')
LINK_ID.append(int(link_id))
slot_id = line_temp.split(':')[1].split(';')[0].split('-')[1].lstrip('0')
SLOT_ID.append(int(slot_id))
else:
slot_id = line_temp.split(':')[1].split(';')[0].lstrip('0')
SLOT_ID.append(int(slot_id))
uut_sn = line_temp.split(':')[2].split(';')[0]
UUT_SN.append(uut_sn)
num += 1
```
注意,这只是一种可能的python实现方式,具体实现可能会因为要考虑更多的边界情况而稍有不同。
阅读全文