这是我的数据集:
chr1_KI270706v1_random,153401,rs867658023,chr1_KI270706v1_random_153401
chr1_KI270706v1_random,154751,rs1030747857,chr1_KI270706v1_random_154751
chr1_KI270706v1_random,156703,rs900345029,chr1_KI270706v1_random_156703
chr1_KI270706v1_random,156856,rs576837150,chr1_KI270706v1_random_156856
我实际上希望它是这样的:
chr1,153401,rs1867658023,chr1_153401
基本上我想删除_KI_random
第 1 列和第 4 列中的额外值。我尝试了此命令,但没有得到所需的输出:
awk 'NR >1 {split($1, array, "_"); print array[1] "_" array[2]; split($2, array, "_"); print array[1] "_" array[2]}' outfile > rsid_final1.csv
答案1
由于这是对各行的简单替换,因此我只使用 sed:
$ sed 's/_KI[^_,]*_[^_,]*//g' file
chr1,153401,rs867658023,chr1_153401
chr1,154751,rs1030747857,chr1_154751
chr1,156703,rs900345029,chr1_156703
chr1,156856,rs576837150,chr1_156856
但如果您愿意,也可以使用 awk 执行相同的操作:
$ awk '{gsub(/_KI[^_,]*_[^_,]*/,"")} 1' file
chr1,153401,rs867658023,chr1_153401
chr1,154751,rs1030747857,chr1_154751
chr1,156703,rs900345029,chr1_156703
chr1,156856,rs576837150,chr1_156856
如果这不是您需要的全部,那么编辑您的问题以提供更真正具有代表性的示例输入/输出,包括上述不起作用的情况。