linux - 如何对行进行多次排序?

标签 linux perl bash solaris disk

我必须找出属于 OmniOS (Solaris 10) 存储阵列中每个设备的物理磁盘编号。我可以通过

获取设备列表
cfgadm -al | grep disk-path | cut -c 6-21 | tr 'a-z' 'A-Z'

输出可能是这样的

5000C5005CF65F14
5000C5004F30CC82
...

所以我的想法是编写一个脚本,在其中dd每个设备并观察 LED,然后输入闪烁的 LED 的编号。由于存储阵列的两侧都有 LED,我需要能够多次运行脚本,并且每次输入磁盘位置时,我不必再次输入。

我当前的想法是循环遍历从上述命令获得的设备名称列表,然后执行类似的操作

system("dd if=/dev/dsk/c1t${device}d0p0 of=/dev/null bs=1k count=100");
print "which led flashed: ";
my $disk = <STDIN>;
chomp $disk;
system("echo $disk $device >> disk.sorted");

这会产生这样的行

21 5000C5005CF65F14
09 5000C5004F30CC82
...

我在第一种情况下看到 LED 21 闪烁,在第二种情况下看到 LED 9 闪烁。有 70 个磁盘。

我的问题

我想不出如何编写一个可以多次运行的脚本,并且每次运行它都不会破坏我之前输入的值。

有什么想法可以做到这一点吗?

我正在 Linux 上对其进行原型(prototype)设计。

最佳答案

对于每次运行 skript,将输出写入不同的文件,例如 out.1out.2 等。然后运行

排序-k +2。*

您将依次获得一张磁盘的所有结果。排序将根据第二列(即磁盘 ID)对给定的所有文件的内容进行排序。

关于linux - 如何对行进行多次排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913318/

相关文章:

java - 使用 Linux 服务器的凭据连接到 AD

linux - Perl 模拟 linux 时间命令

perl - ListUtil.c : loadable library and perl binaries are mismatched (got handshake key 0xdb00080, 需要 0xdb80080)

r - 从 R 脚本中提取函数的更好方法?

bash - sed 删除特定点,包括模式本身

php - Xampp 和 mailtodisk 使用 PHPMailer 调试电子邮件

c++ - cmake -- 让一个子目录使用它自己的 Makefile

mysql - Bash:当服务器出现故障时关闭 MySQL 连接

regex - 如何在 Perl 中找到正则表达式匹配的位置?

linux - 如何从当前目录执行添加到 .bashrc 的文件?