使用 awk/sed 重定位字符串

Relocation strings using awk/sed

我想根据索引号重新定位字符串。

第一列显示索引号,第二列显示字符串。

 1        path_sparc_ifu_dec_104  
 1        path_sparc_ifu_dec_105  
 2        path_sparc_ifu_dec_63  
 2        path_sparc_ifu_dec_92 
 3        path_sparc_ifu_dec_39  
 4        path_sparc_ifu_dec_43  
 4        path_sparc_ifu_dec_71  
 5        path_sparc_ifu_dec_103  
 6        path_sparc_ifu_dec_99  
 7        path_sparc_ifu_dec_55 
 7        path_sparc_ifu_dec_75  
 7        path_sparc_ifu_dec_93

如果索引号为1,对应的字符串放在第一行。同时,删除索引号。

期望的输出是:

path_sparc_ifu_dec_104  path_sparc_ifu_dec_105  
path_sparc_ifu_dec_63  path_sparc_ifu_dec_92 
path_sparc_ifu_dec_39  
path_sparc_ifu_dec_43  path_sparc_ifu_dec_71  
path_sparc_ifu_dec_103  
path_sparc_ifu_dec_99  
path_sparc_ifu_dec_55 path_sparc_ifu_dec_75 path_sparc_ifu_dec_93

我认为awk/sed可以逐列读取文件并重新定位字符串,但我需要帮助!

对于此问题的任何帮助,我将不胜感激。

最佳,

在玹

我的版本:

$ awk '{if(prev==){printf(" ")}else{if(NR!=1){printf("\n")}};printf("%s",);prev=}END{printf("\n")}' file
path_sparc_ifu_dec_104 path_sparc_ifu_dec_105
path_sparc_ifu_dec_63 path_sparc_ifu_dec_92
path_sparc_ifu_dec_39
path_sparc_ifu_dec_43 path_sparc_ifu_dec_71
path_sparc_ifu_dec_103
path_sparc_ifu_dec_99
path_sparc_ifu_dec_55 path_sparc_ifu_dec_75 path_sparc_ifu_dec_93

因为索引号是排序的,所以我们只打印第二列的值但没有换行符。当索引号改变时,我们正在打印换行符。

使用awk

$ awk '{
    lines[] = (  in lines ? lines[] FS  :  )
  } END {
     for (x in lines) print lines[x]
 }' file
path_sparc_ifu_dec_104 path_sparc_ifu_dec_105
path_sparc_ifu_dec_63 path_sparc_ifu_dec_92
path_sparc_ifu_dec_39
path_sparc_ifu_dec_43 path_sparc_ifu_dec_71
path_sparc_ifu_dec_103
path_sparc_ifu_dec_99
path_sparc_ifu_dec_55 path_sparc_ifu_dec_75 path_sparc_ifu_dec_93