使用awk/sed重新定位字符串
我想根据索引号重新定位字符串 索引号显示在第一列,字符串显示在第二列使用awk/sed重新定位字符串,awk,sed,relocation,Awk,Sed,Relocation,我想根据索引号重新定位字符串 索引号显示在第一列,字符串显示在第二列 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
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可以逐列读取文件并重新定位字符串,但我需要帮助
对于这个问题,我将不胜感激
最好的
Jaeyoung我的版本:
$ awk '{if(prev==$1){printf(" ")}else{if(NR!=1){printf("\n")}};printf("%s",$2);prev=$1}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[$1] = ( $1 in lines ? lines[$1] FS $2 : $2 )
} 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
尝试使用$1作为数组索引,并在其中附加一个空格和$2。在结束规则中,打印出数组的每个元素。