删除所有正则表达式匹配的行

Delete ALL Regex Matched Line

这是我的文件:

remark goes here
MASS
Pd 0.000         0.000               ATTN, need revision
ns 14.010        0.530               same as n  

BOND
Pd-cl    0.00   0.000       ATTN, need revision
Pd-na    0.00   0.000       ATTN, need revision
c -ns  427.60   1.379       same as c -n 
ns-hn  403.20   1.013       same as hn-n 
ns-c3  328.70   1.462       same as c3-n 

ANGLE
Pd-na-c2    0.000       0.000   ATTN, need revision
Pd-na-cc    0.000       0.000   same as Pd-na-c2
cl-Pd-na    0.000       0.000   ATTN, need revision
cl-Pd-cl    0.000       0.000   ATTN, need revision
na-Pd-na    0.000       0.000   ATTN, need revision
c2-c -ns   69.957     115.170   Calculated with empirical approach
cc-c2-c    67.710     120.700   same as c -c2-c2
c -ns-hn   48.330     117.550   same as c -n -hn
c -ns-c3   63.390     120.690   same as c -n -c3
o -c -ns   74.220     123.050   same as n -c -o 
ns-c3-h1   49.840     108.880   same as h1-c3-n 
hn-ns-c3   45.800     117.680   same as c3-n -hn

DIHE
cl-Pd-na-c2   1    0.000         0.000           0.000      ATTN, need revision
cl-Pd-na-cc   1     -nan         0.000           0.000      same as cl-Pd-na-c2
na-Pd-na-c2   1    0.000         0.000           0.000      ATTN, need revision
na-Pd-na-cc   1    0.000         0.000           0.000      ATTN, need revision
c2-c2-cc-ha   1    6.650       180.000           2.000      same as X -c2-ce-X 
c2-c2-cc-cd   1    6.650       180.000           2.000      same as X -c2-ce-X 
c2-c -ns-hn   1    2.500       180.000           2.000      same as X -c -n -X 
c2-c -ns-c3   1    2.500       180.000           2.000      same as X -c -n -X 
ha-cc-c2-c    1    6.650       180.000           2.000      same as X -c2-ce-X 
cd-cc-c2-c    1    6.650       180.000           2.000      same as X -c2-ce-X 
c -ns-c3-h1   1    0.000         0.000           2.000      same as X -c3-n -X 
o -c -ns-hn   1    2.500       180.000          -2.000      same as hn-n -c -o 
o -c -ns-hn   1    2.000         0.000           1.000      same as hn-n -c -o 
o -c -ns-c3   1    2.500       180.000           2.000      same as X -c -n -X 
hn-ns-c3-h1   1    0.000         0.000           2.000      same as X -c3-n -X 

IMPROPER
Pd-c2-na-cc         1.1          180.0         2.0          Using default value
c2-h4-c2-na         1.1          180.0         2.0          Using default value
c -c2-c2-cc         1.1          180.0         2.0          Using default value
c2-cd-cc-ha         1.1          180.0         2.0          Using default value
cc-cc-cd-ha         1.1          180.0         2.0          Using default value
cd-h4-cc-na         1.1          180.0         2.0          Using default value
c2-ns-c -o         10.5          180.0         2.0          General improper torsional angle (2 general atom types)
c -c3-ns-hn         1.1          180.0         2.0          Using default value

NONBON
  Pd          0.0000  0.0000             ATTN, need revision
  ns          1.8240  0.1700             same as n  

在这个文件中我想删除所有包含 “ATTN, need revision”行和“0.000 same as”(在 as 和 0.000 之间可能有 2 到 10 个 space 字符 0.000+ {2,10} same as ) 我成功地应用了这个命令:

 sed -i '/ATTN, need revision/d' check2.dat

然后我也需要删除匹配的这一行:0.000+ {2,10} same as

我应用了这段代码,但没有用:sed -i.old '/0.000+ {2,10} same as /d' check2.dat我该怎么做?或者我哪里做错了?

谢谢..

我的目标最终文件在这里:

remark goes here
MASS
ns 14.010        0.530               same as n  

BOND
c -ns  427.60   1.379       same as c -n 
ns-hn  403.20   1.013       same as hn-n 
ns-c3  328.70   1.462       same as c3-n 

ANGLE
c2-c -ns   69.957     115.170   Calculated with empirical approach
cc-c2-c    67.710     120.700   same as c -c2-c2
c -ns-hn   48.330     117.550   same as c -n -hn
c -ns-c3   63.390     120.690   same as c -n -c3
o -c -ns   74.220     123.050   same as n -c -o 
ns-c3-h1   49.840     108.880   same as h1-c3-n 
hn-ns-c3   45.800     117.680   same as c3-n -hn

DIHE
c2-c2-cc-ha   1    6.650       180.000           2.000      same as X -c2-ce-X 
c2-c2-cc-cd   1    6.650       180.000           2.000      same as X -c2-ce-X 
c2-c -ns-hn   1    2.500       180.000           2.000      same as X -c -n -X 
c2-c -ns-c3   1    2.500       180.000           2.000      same as X -c -n -X 
ha-cc-c2-c    1    6.650       180.000           2.000      same as X -c2-ce-X 
cd-cc-c2-c    1    6.650       180.000           2.000      same as X -c2-ce-X 
c -ns-c3-h1   1    0.000         0.000           2.000      same as X -c3-n -X 
o -c -ns-hn   1    2.500       180.000          -2.000      same as hn-n -c -o 
o -c -ns-hn   1    2.000         0.000           1.000      same as hn-n -c -o 
o -c -ns-c3   1    2.500       180.000           2.000      same as X -c -n -X 
hn-ns-c3-h1   1    0.000         0.000           2.000      same as X -c3-n -X 

IMPROPER
Pd-c2-na-cc         1.1          180.0         2.0          Using default value
c2-h4-c2-na         1.1          180.0         2.0          Using default value
c -c2-c2-cc         1.1          180.0         2.0          Using default value
c2-cd-cc-ha         1.1          180.0         2.0          Using default value
cc-cc-cd-ha         1.1          180.0         2.0          Using default value
cd-h4-cc-na         1.1          180.0         2.0          Using default value
c2-ns-c -o         10.5          180.0         2.0          General improper torsional angle (2 general atom types)
c -c3-ns-hn         1.1          180.0         2.0          Using default value

NONBON
  ns          1.8240  0.1700             same as n  

有了 GNU sed,你可以使用

sed -E -i '/ATTN, need revision|0\.000[[:blank:]]+same as/d' check2.dat
sed -E -i '/ATTN, need revision|\<0\.000[[:blank:]]+same as/d' check2.dat

online demo:

#!/bin/bash
s='Pd-na-c2    0.000       0.000   ATTN, need revision
Pd-na-cc    0.000       0.000   same as Pd-na-c2
cl-Pd-na    0.000       0.000   ATTN, need revision
cl-Pd-cl    0.000       0.000   ATTN, need revision
na-Pd-na    0.000       0.000   ATTN, need revision
c2-c -ns   69.957     115.170   Calculated with empirical approach'
sed -E '/ATTN, need revision|0\.000[[:blank:]]+same as/d' <<< "$s"
## => c2-c -ns   69.957     115.170   Calculated with empirical approach

POSIX ERE 正则表达式匹配

  • ATTN, need revision - 固定字符串
  • | - 或
  • \< - left-hand 字边界
  • 0\.000 - 0.000
  • [[:blank:]]+ - 一个或多个水平空格
  • same as - 固定字符串。