这是我的原始数据的片段:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 2160 604 520 S 0.0 0.1 0:01.60 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:00.39 events/0
5 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
6 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.36 kblockd/0
10 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
174 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
177 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
Run Code Online (Sandbox Code Playgroud)
请注意左列如何具有前导空白。我想将此数据的每一列拆分为自己的数组。在使用我的拆分功能时,那个领先的空白给我带来了麻烦。
我正在使用这个:
foreach my $line (@data) {
my @column = split(/\s+/,$line);
chomp (@column);
print "$column[0]\n";
}
Run Code Online (Sandbox Code Playgroud)
当我打印所有元素时,我想要发生的column[0]是它打印所有没有空格的 PID 数字。当我打印时,column[1]它会打印所有没有空格的用户。因为列是合理的,所以一切都搞砸了。
谢谢。
这种需求非常普遍,以至于特殊的拆分调用split(' ', ...)(否则与 相同split(/\s+/, ...))会丢弃前导空格。
任何一个都丢弃尾随空格,因此不需要 chomp。