Mam zestaw danych z 20 000 sond, są one w dwóch kolumnach po 21 sztuk każdy. Z tego pliku muszę wyodrębnić linie, w których ostatni nukleotyd w kolumnie Probe1 pasuje do ostatniego nukleotydu w kolumnie Probe 2. Do tej pory próbowałem funkcji AWK (substr), ale nie uzyskałem oczekiwanego rezultatu. Oto jeden-liner Próbowałem:Awk: jak porównać dwa ciągi w jednym wierszu
awk '{if (substr($2,21,1)==substr($4,21,1)){print $0}}'
Innym rozwiązaniem byłoby zakotwiczyć ostatni znak w kolumnach 2 i 4 (awk '$2~/[A-Z]$/
), ale nie mogę znaleźć sposób, aby dopasować sondy w dwóch kolumnach przy użyciu regex. Wszystkie sugestie i komentarze będą bardzo mile widziane.
Przykład zbioru danych:
Probe 1 Probe 2
4736 GGAGGAAGAGGAGGCGGAGGA A GGAGGACGAGGAGGAGGAGGA
4737 GGAGGAAGAGGAGGGAGAGGG B GGAGGACGAGGAGGAGGAGGG
4738 GGAGGATTTGGCCGGAGAGGC C GGAGGAGGAGGAGGACGAGGT
4739 GGAGGAAGAGGAGGGGGAGGT D GGAGGACGAGGAGGAGGAGGC
4740 GGAGGAAGAGGAGGGGGAGGC E GGAGGAGGAGGACGAGGAGGC
Pożądany wyjściowa:
4736 GGAGGAAGAGGAGGCGGAGGA A GGAGGACGAGGAGGAGGAGGA
4737 GGAGGAAGAGGAGGGAGAGGG B GGAGGACGAGGAGGAGGAGGG
4740 GGAGGAAGAGGAGGGGGAGGC E GGAGGAGGAGGACGAGGAGGC
Podany przykład 'awk' już tworzy pożądane wyjście, które opisałeś. Czego więcej potrzebujesz? – janos
To rzeczywiście działa, przepraszam za zamieszanie. – Bio21