数字の置換(引き算)sedコマンド?
1________2_________3_________4_________5_________6_________7______
123456789012345678901234567890123456789012345678901234567890123456
ATOM______1__N___VAL_____1______38.983__13.792__44.273__0.00__0.00
…
ATOM___1537__OXT_ALA____95______35.430_156.289__27.449__0.00__0.00
TER_______0______________0
ATOM___1538__N___VAL____96______39.910__13.799__36.762__0.00__0.00
…
ATOM___3074__OXT_ALA___190______25.170 150.107___6.221__0.00__0.00
上記のようなファイルを対象としています。
上記のファイルの説明を行います。
初めの二行(数字とアンダーバーが書いてある部分)は説明のために付け加えたもので、ファイル中には存在しません。
上の例の3行目から本来のファイルはスタートします。
…は省略を表し、TERは本来ならば1538行目です。
TERの次の行からさらに1537行の情報があります。
これはpdbファイルというもので、18~21列目の番号は原子につけたもので、34~36列目の数字は、アミノ酸残基数を表します。また43列目以降は座標の位置を表します。
本来のファイルにはアンダーバーはありませんが、投稿時に空白はまとめられてしまうので、アンダーバーで置換しております。
ここで質問ですが、TER(1539行目)以降の34~36列目の数字を置換したいと考えております。具体的には、
96→1
97→2
…
190→95
というように置換したいと思います。
以下、留意していただきたい点を書きます。
courie newフォントで見ていただけると列が揃うので見やすいので、可能ならワードなどで張り付けてcourie newで見てください。
置換後の数字(1~95)の右端の数字は21列目になる必要があります。
置換前の数字(96~190)を含んでいる行数は一定ではありません。たとえば、96を指定の位置に持っている行は13行、97を指定の位置に持っている行は、10行などとなっております。
本ファイル(pdbファイル)の形式については、http://homepage2.nifty.com/copper29/ipr/PDBforma …
の10. Coordinate Section 10. 座標(Coordinate Section)に詳しい記述がありますので、御参考にしてください。
Sedコマンドなどを用いてやるのかなと思っておりますが、よくわかりませんので質問させていただきました。
No.1ベストアンサー
- 回答日時:
>置換後の数字(1~95)の右端の数字は21列目になる必要があります。
この 21 というはこの説明だと 36 の間違いでは?
そうだとしたら awk でこんな感じでどうでしょう。
awk 'ter==1 && /^ATOM/ {printf "%s%3d%s\n", substr($0,1,23), $5-95, substr($0,27,40); next} /^TER/{ter=1} {print $0}' protein.pdb
おっしゃる通り、36でした。
上記のawkファイルでうまく置換することができ、また、本来の目的である、プログラムによる解析も行うことができました。感謝します。
awkの基本すらまだ理解しておりませんが、いまからそれぞれどういう意味をもつか勉強したいと思います。
ありがとうございました。
この質問と回答をご覧になったかたへ。
私も調べるまで知りませんでしたが、ファイルに出力する場合、
awk 'ter==1 && /^ATOM/ {printf "%s%3d%s\n", substr($0,1,23), $5-95, substr($0,27,40); next} /^TER/{ter=1} {print $0}' protein.pdb > new.pdb
とするようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- UNIX・Linux sedでの正規化 2 2022/05/10 11:39
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bashでシングルクォート内の変...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
自作のウェブサイトを友人に見...
-
Ubuntu系とCentOS系の違いはな...
-
AWSでSSH接続をしたいのですが...
-
ubuntu(linux)のシャットダウン...
-
Ubuntu on Xorgのログインについて
-
ubuntuで デイスク/deb/loopと...
-
ubuntuのシャットダウンが進ま...
-
yumやaptで依存関係で自動的に...
-
Ubuntuで数字だけのユーザーア...
-
Windowsのローカルディレクトリ...
-
VirtualBox ゲストOSにPC内蔵HD...
-
linuxサーバーのキャッシュをク...
-
ホストオンリーアダプタで接続...
-
ntpq -pの結果が全てstratum 16...
-
ssl_error_logのエラー内容(AH...
-
Let’s Encrypt の自動更新をcro...
-
Linux のシェルスクリプトの強...
-
ファイルデータでネットワーク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuのシャットダウンが進ま...
-
Windowsのパソコンを使って仮想...
-
ubuntuで デイスク/deb/loopと...
-
AWSでSSH接続をしたいのですが...
-
Ubuntu on Xorgのログインについて
-
LinuxのノートパソコンでDVDコ...
-
linuxサーバーのキャッシュをク...
-
Postfixでドコモメールに送信す...
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Linux Mint 日本語入力できなく...
-
ホストオンリーアダプタで接続...
-
ubuntuのサーバー(virtual box)...
-
VirtualBox ゲストOSにPC内蔵HD...
-
shellscript内のコマンドを、su...
-
Linux Ubuntu22.4の起動時エラ...
-
Ubuntu でinvalid filenameとな...
おすすめ情報