使用 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
我想根据索引号重新定位字符串。
第一列显示索引号,第二列显示字符串。
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