【问题标题】:Creating new line for each n-column value, while maintaining Col. 1 value为每个 n 列值创建新行,同时保持第 1 列值
【发布时间】:2015-06-26 23:39:35
【问题描述】:

我有以下由制表符(n 列)分隔的数据类型:

-2  abandonar   abandono    abandonas   abandona    abandonamos abandonáis  abandonan   
-4  abandonado  abandonada  abandonados abandonadas 
-2  abandona    abandonos                                       
-3  secuestrado secuestrada secuestrados    secuestradas    secuestraría    secuestrarías   secuestraríamos secuestraríais  secuestrarían

我需要保留第 1 列中的值,但我需要将下列各列中的每个字符串移动到它们自己的行。期望的结果是这样的:

-2  abandonar
-2  abandono
-2  abandonas
-2  abandona
-2  abandonamos
-2  abandonáis
-2  abandonan   
-4  abandonado
-4  abandonada
-4  abandonados
-4  abandonadas 
-2  abandona    
-2  abandonos                                       
-3  secuestrado 
-3  secuestrada 
-3  secuestrados    
-3  secuestradas    
-3  secuestraría    
-3  secuestrarías   
-3  secuestraríamos
-3  secuestraríais
-3  secuestrarían

awk 中是否有允许此类操作的函数? 简单地写出我需要在每一行打印的内容:

$awk '{print $1, $2, etc}'

会很麻烦,尤其是因为有 代码: n 列

到目前为止,我已经尝试了一些awk 解决方案来帮助解决有关转置数据的问题。我找到了这个解决方案here

awk '{ for (i=1;i<=NF;i++ ) printf $i " " }'

awk '{
       for (f = 1; f <= NF; f++) { a[NR, f] = $f } 
     }
     NF > nf { nf = NF }
     END {
       for (f = 1; f <= nf; f++) {
           for (r = 1; r <= NR; r++) {
               printf a[r, f] (r==NR ? RS : FS)
           }
       }
    }' input

但是,正如您可能看到的那样,它们并不能完全解决问题,因为我希望每列也附加到第 1 列中其行的原始值,而这些解决方案只是转置数据。 关于如何达到我想要的结果的任何想法?

【问题讨论】:

    标签: awk sed terminal row col


    【解决方案1】:

    如果我理解正确,那么

    awk '{ for(i = 2; i <= NF; ++i) print $1, $i }' filename
    

    应该可以。

    【讨论】:

    • 公平地说,因为两个答案都是一样的,所以我只选择了第一个作为正确答案。
    • @owwoow14 选择这个他们击败了我一分钟 :)
    • @JID 哎呀!你说的对!抱歉 :D 感谢您的帮助,解决方案(他们两个)都很好用!
    【解决方案2】:

    未经测试,但这应该可以工作

    awk '{for(i=2;i<=NF;i++)print $1,$i}' file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2023-01-19
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      相关资源
      最近更新 更多