Chcę zastąpić drugą kolumnę mojego pierwszego pliku

Plik 1:

2       rs58086319      0       983550  T       C
2       rs56809628      0       983571  T       C
2       rs7608441       0       983572  A       G
2       rs114910509     0       983579  A       G
2       var_chr2_983614 0       983614  T       C
2       var_chr2_983624 0       983624  A       G
2       rs115188027     0       983632  A       C
2       var_chr2_983636 0       983636  T       C
2       var_chr2_983650 0       983650  A       G
2       var_chr2_983660 0       983660  T       C

Z pierwszą kolumną mojego drugiego pliku

Plik 2:

2_983550_T_C
2_983571_T_C
2_983572_A_G
2_983579_A_G
2_983614_T_C
2_983624_A_G
2_983632_A_C
2_983636_T_C
2_983650_A_G
2_983660_T_C

Próbowałem dołączyć i awk, ale jakoś nie działa. Podejrzewam fakt, że w moim drugim pliku jest "_".

Dziękuję Ci

1
a_avelar 4 czerwiec 2018, 17:25

4 odpowiedzi

Najlepsza odpowiedź

Twój plik2 ma tylko jedną kolumnę, więc dzięki awk.

awk -v f='file2' '{getline $2 <f}1' file1

Jeśli separator pliku2 jest "_"

awk -v f='file2' '{getline a <f;split(a,b,"_");$2=b[1]}1' file1
1
ctac_ 4 czerwiec 2018, 14:38

Jestem trochę zdziwiony, dlaczego potrzebujesz drugiego pliku. Wszystkie informacje o file2 wydaje się zakodować w file1. Możesz po prostu zrobić coś takiego:

awk '{$2=$1"_"$4"_"$5"_"$6}1' file1
2
kvantour 4 czerwiec 2018, 14:58

Edytuj: W przypadku, gdy chcesz wykonać _ jako separator pola w Input_file2, a następnie w następstwie może pomóc.

awk 'FNR==NR{a[FNR]=$1;next} (FNR in a){$2=a[FNR]} 1' FS="_" file2 FS=" " file1 | column -t

Po awk może ci pomóc tutaj.

awk 'FNR==NR{a[FNR]=$0;next} (FNR in a){$2=a[FNR]} 1' file2 file1 | column -t
1
RavinderSingh13 4 czerwiec 2018, 14:37

Pójdę z paste i awk, np.:

paste file1 file2 | awk '{ $2 = $NF } NF--' OFS='\t'

Wynik:

2   2_983550_T_C    0   983550  T   C
2   2_983571_T_C    0   983571  T   C
2   2_983572_A_G    0   983572  A   G
2   2_983579_A_G    0   983579  A   G
2   2_983614_T_C    0   983614  T   C
2   2_983624_A_G    0   983624  A   G
2   2_983632_A_C    0   983632  A   C
2   2_983636_T_C    0   983636  T   C
2   2_983650_A_G    0   983650  A   G
2   2_983660_T_C    0   983660  T   C
0
Thor 4 czerwiec 2018, 16:02