Как вы можете сравнить записи между двумя столбцами в Linux? - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь выяснить, совпадает ли первая буква аминокислоты с ее буквенным кодом.

Например, глицин начинается с G, а его буквенный код также (G).Итак, аргинин начинается с буквы А, но его буквенный код (R)

В результате я пытаюсь распечатать аминокислоты с одинаковым буквенным кодом и начальным алфавитом.

У меня есть файл данных CSV, в котором столбцы разделены символом ',' *

Name,One letter code,Three letter code,Hydropathy,Charge,Abundance,DNA codon(s)
Arginine,R,Arg,hydrophilic,+,0.0514,CGT-CGC-CGA-CGG-AGA-AGG
Asparagine,N,Asn,hydrophilic,N,0.0447,AAT-AAC
Aspartate,D,Asp,hydrophilic,-,0.0528,GAT-GAC
Glutamate,E,Glu,hydrophilic,-,0.0635,GAA-GAG
Glutamine,Q,Gln,hydrophilic,N,0.0399,CAA-CAG
Lysine,K,Lys,hydrophilic,+,0.0593,AAA-AAG
Serine,S,Ser,hydrophilic,N,0.0715,TCT-TCC-TCA-TCG-AGT-AGC
Threonine,T,Thr,hydrophilic,N,0.0569,ACT-ACC-ACA-ACG

. Я считаю, что приведенный ниже код является одним из способов сравнения столбцов, но мне интересно, как я могу извлечь первую букву из первойстолбец и сравните это с алфавитом во втором столбце

awk '{ if ($1 == $2) { print $1; } }' < foo.txt

Ответы [ 3 ]

3 голосов
/ 13 июня 2019

Не могли бы вы попробовать следующее.

awk 'BEGIN{FS=","} substr($1,1,1) == $2' Input_file

Вывод будет следующим.

Serine,S,Ser,hydrophilic,N,0.0715,TCT-TCC-TCA-TCG-AGT-AGC
Threonine,T,Thr,hydrophilic,N,0.0569,ACT-ACC-ACA-ACG

Объяснение: Добавление пояснения к приведенному выше коду.

awk '                     ##Starting awk program here.
BEGIN{                    ##Starting BEGIN section for awk here.
 FS=","                   ##Setting FS as comma here, field separator.
}                         ##Closing BLOCK for BEGIN here.
substr($1,1,1) == $2      ##Using substr function of awk to get sub string from line, substr(line/variable/field, starting point, ending point) is method for using it. Getting 1st letter of $1 and comparing it with $2 of current line, if TRUE then it will print current line.
' Input_file              ##Mentioning Input_file name here.
2 голосов
/ 13 июня 2019

Упрощенный способ использования grep:

$ grep -E '^(.)[^,]*,\1' input.csv 
Serine,S,Ser,hydrophilic,N,0.0715,TCT-TCC-TCA-TCG-AGT-AGC
Threonine,T,Thr,hydrophilic,N,0.0569,ACT-ACC-ACA-ACG
1 голос
/ 13 июня 2019

То же, что выражение RavinderSingh, но атрибут селектора поля отличается.

awk -F "," 'substr($1,1,1) == $2' InFile

Serine,S,Ser,hydrophilic,N,0.0715,TCT-TCC-TCA-TCG-AGT-AGC
Threonine,T,Thr,hydrophilic,N,0.0569,ACT-ACC-ACA-ACG
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...