私はこれが尋ねられたと確信していますが、それを見つけることができませんので、冗長性のために私の謝罪。
grepまたはegrepを使用して、「P」または「CA」のいずれかが含まれるすべての行を検索し、それらを新しいファイルにパイプします。私はどちらかを使って簡単にそれを行うことができます:
egrep " CA " all.pdb > CA.pdb
または
egrep " P " all.pdb > P.pdb
私は正規表現が初めてなので、構文がわからない or
.
更新: 出力行の順序は重要です。つまり、一致した文字列で出力を並べ替えるのは望ましくありません。 1つのファイルの最初の8行の例を次に示します。
ATOM 1 N THR U 27 -68.535 88.128 -17.857 1.00 0.00 1H5 N
ATOM 2 HT1 THR U 27 -69.437 88.216 -17.434 0.00 0.00 1H5 H
ATOM 3 HT2 THR U 27 -68.270 87.165 -17.902 0.00 0.00 1H5 H
ATOM 4 HT3 THR U 27 -68.551 88.520 -18.777 0.00 0.00 1H5 H
ATOM 5 CA LYS B 122 -116.643 85.931-103.890 1.00 0.00 2H2B C
ATOM 6 P THY J 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 P
ATOM 8 HB THR U 27 -68.543 88.566 -15.171 0.00 0.00 1H5 H
ATOM 9 CA LYS B 122 -116.643 85.931-103.890 1.00 0.00 2H2B C
ATOM 10 P THY J 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 P
ATOM 11 HB THR U 27 -68.543 88.566 -15.171 0.00 0.00 1H5 H
ATOM 12 C SER D 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 C
ATOM 13 OP1 SER D 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 O
そして、この例の結果ファイルを次のようにします。
ATOM 5 CA LYS B 122 -116.643 85.931-103.890 1.00 0.00 2H2B C
ATOM 6 P THY J 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 P
ATOM 9 CA LYS B 122 -116.643 85.931-103.890 1.00 0.00 2H2B C
ATOM 10 P THY J 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 P
回答:
回答№1は5あなたは使うことができます grep
このような:
grep " P | CA " file > new_file
ザ |
式は「または」を示します。私たちは伝えるためにそれをエスケープする必要があります grep
特別な意味があること。
このエスケープを回避し、拡張機能を備えたより洗練されたものを使用することができます grep
:
grep -E " (P|CA) " file > new_file
一般的に、私は awk
構文、より明確で拡張しやすいため:
awk "/ P / || / CA /" file
または、サンプル入力を使用して、使用できます awk
これが発生したときに3列目にあるかどうかを確認するには:
$ awk "$3=="CA" || $3=="P"" file
ATOM 5 CA LYS B 122 -116.643 85.931-103.890 1.00 0.00 2H2B C
ATOM 6 P THY J 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 P
ATOM 9 CA LYS B 122 -116.643 85.931-103.890 1.00 0.00 2H2B C
ATOM 10 P THY J 2 -73.656 70.884 -7.805 1.00 0.00 DNA2 P
テスト
$ cat file
hello P is here and CA also
but CA appears
nothing here
P CA
$ grep " P | CA " file
hello P is here and CA also
but CA appears
$ grep -E " (P|CA) " file
hello P is here and CA also
but CA appears
$ awk "/ P / || / CA /" file
hello P is here and CA also
but CA appears
回答№2の場合は0
次のコマンドは、ディレクトリに存在するすべてのファイルを検索します /path_to_your_dir/
ログを出力します /tmp/grep.log
:
grep "P | CA" -Er / path_to_your_dir /> /tmp/grep.log
大文字と小文字を区別しない場合は、置き換えます -Er
に -Eri
.
ファイル内 /tmp/grep.log
ファイルへのパスと一致した文字列が表示されます。
特定の拡張子を持つファイルを検索する必要がある場合は、次のように記述します。
grep "P | CA" -Er --include = *。php / path_to_your_dir /> /tmp/grep.log
それがあなたを助けることを願っています。