Mam kilka plików pdb i chcę zachować tylko te wiersze, które zaczynają się od, ^FORMUL
a jeśli po wierszu C
występuje liczba większa niż (C3,C4,C5,C6..100 etc)
wtedy, nie powinienem go drukować. Drugi warunek jest taki, że w każdej linii suma C, H and N
powinna wynosić co najmniej 6.
Więc ogólnie usuń wiersze, po których C
następuje liczba, 2>
a suma C+O+N
to >=
6.
FORMUL 3 HOH *207(H2 O) (print it)
FORMUL 2 SF4 FE4 S4 (print it)
FORMUL 3 NIC C5 H7 N O7 (don't print, there is C5)
FORMUL 4 HOH *321(H2 O) (print it)
FORMUL 3 HEM 2(C34 H32 FE N4 O4) (don't print, there is C34)
Próbowałem to zrobić, perl
ale linie są tak różne od siebie, więc nie jestem pewien, czy jest to możliwe.
C3 N1 01
nie należy usuwać, ponieważ ogólnie jest to mniej niż 5, C2 N4 02
należy usunąć, chociaż C2
istnieją, ogólnie jest to więcej niż 6. Ogólnie usunąć wszystkie wiersze, w których C>2
i sum is 6
.
grep '^FORMUL' *pdb | grep -vE 'C([3-9]|[12][0-9])'
ponieważ chciałem usunąć te wiersze, które późniejC
mają liczbę większą niż 3. Oba warunki powinny zostać uwzględnione, ale nie razem, co oznacza, że jeśli mamC2 N5 02
, jest nadal w porządku, chociaż po C następuje1