为每个 n 列值创建新行,同时保持第 1 列值

Creating new line for each n-column value, while maintaining Col. 1 value

我有以下由制表符(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 中是否有允许此类操作的函数? 简单地写出我需要在每一行上打印的内容 à la:

$awk '{print , , 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 '{ for(i = 2; i <= NF; ++i) print , $i }' filename

应该可以。

未测试,但这应该有效

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