Это работает с mawk
:
awk 'NR==1{$7="G";print;next} \
$3~/^[A,C,G,T]$/ || $4~/^[A,C,G,T]$/ {$7="P"} \
$3~/^[I,D,R]$/ || $4~/^[I,D,R]$/ {$7="Q"} \
$4~/[A-Z][A-Z]/ || $3~/[A-Z][A-Z]/ {$7="Q"} 1' file
G
в заголовок. $3
из $4
являются A, C, G или T, то $7
равно P
. $3
из $4
равны I, D или R, то $7
равно Q
. $3
из $4
больше одной Буквы, то $7
равно Q
. 1
в конце печатает все строки. Используйте следующее:
awk -F, '($2==1000 && $4!="A") || ($2==1001 && $4!="B") || ($2==1002 && $4!="C")' file
В криволинейных ветвях находятся 3 условия; если один из них применим, строка будет напечатана. Условия внутри скобок связаны с И, поэтому должны применяться оба условия.
-121--95488- Вы можете сделать это с помощью egrep
:
egrep -v '.*,((1000,.*,A)|(1001,.*,B)|(1002,.*,C))' filename
Будет соответствовать всем строкам, которые не имеют 2-го столбца с 1000 и 4-го с A, 2-го с 1001 и 4-го с B или 2-го с 1002 и 3-го с C.