首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BASH中nawk和OFS的问题

BASH中nawk和OFS的问题
EN

Stack Overflow用户
提问于 2011-05-07 05:42:31
回答 2查看 763关注 0票数 1

我正在编写一个脚本来提取处理器集号,后跟bash shell中Solaris中该处理器集下的处理器in:

下面是我想要提取的输出:($output的内容)

代码语言:javascript
复制
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

期望的输出为:

代码语言:javascript
复制
1: 0 1
2: 2 8 9
3: 3 4 5 6 7

我使用nawk编写的代码如下:

代码语言:javascript
复制
print $output | nawk '                                 
BEGIN { ORS="\n" ; OFS = " " }
{
print$4; print OFS
for (i=6;i<=NF;i++)
print $i
}'

获取的输出:

代码语言:javascript
复制
1: 
0 
1
2: 
2 
8 
9
3:  
3 
4 
5 
6 
7

有谁可以帮助我,让我知道我在获得所需输出的过程中遗漏了什么。提前谢谢。

编辑:使用OFS和ORS的想法可以从本教程获得:tutorial link

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-07 05:50:36

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

代码语言:javascript
复制
print $output | awk '
    BEGIN { ORS=""; }
    {
        print $4;
        for (i=6;i<=NF;i++)
            print " " $i;
        print "\n";
    }'

您也可以使用cut执行此操作:

代码语言:javascript
复制
print $output | cut -d ' ' -f 4,6-
票数 1
EN

Stack Overflow用户

发布于 2011-05-07 05:55:49

尝尝这个

代码语言:javascript
复制
print $output | nawk '                                 
BEGIN { ORS="\n" ; OFS = " " }
{
outrec = ""
for (i=6;i<=NF;i++)
    outrec = outrec " " $i
    print $4 " " outrec
}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5917322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档