1

我正在编写一个脚本来提取处理器集编号,然后是在 bash shell 中的 Solaris 中属于该处理器集的处理器 ID:

这是我要从中提取的输出:($output 的内容)

user processor set 1: processors 0 1
user processor set 2: processors 2 8 9
user processor set 3: processors 3 4 5 6 7

期望的输出是:

1: 0 1
2: 2 8 9
3: 3 4 5 6 7

我使用 nawk 编写的代码:

print $output | nawk '                                 
BEGIN { ORS="\n" ; OFS = " " }
{
print$4; print OFS
for (i=6;i<=NF;i++)
print $i
}'

获得的输出:

1: 
0 
1
2: 
2 
8 
9
3:  
3 
4 
5 
6 
7

任何人都可以帮助并让我知道我从获得所需的输出中缺少什么。提前致谢。

编辑:从本教程获得使用 OFS 和 ORS 的想法:教程链接

4

2 回答 2

1

ORS默认情况下已设置为"\n"。由于您想使用多个打印语句,因此您需要将其设置为空字符串,因为print ORS在任何打印语句之后都有一个隐含的。

print $output | awk '
    BEGIN { ORS=""; }
    {
        print $4;
        for (i=6;i<=NF;i++)
            print " " $i;
        print "\n";
    }'

你也可以用 cut 来做到这一点:

print $output | cut -d ' ' -f 4,6-
于 2011-05-06T21:50:35.700 回答
1

试试这个

print $output | nawk '                                 
BEGIN { ORS="\n" ; OFS = " " }
{
outrec = ""
for (i=6;i<=NF;i++)
    outrec = outrec " " $i
    print $4 " " outrec
}'
于 2011-05-06T21:55:48.580 回答