これは私の最初の投稿であり、bashコーディングではかなり新しいです。 私はいくつかの実験を行いましたが、gnuplotでプロットするために、反応ラベルを結果に追加する必要があります。テーブルをループしてそのテーブルの情報を別のファイルに追加する
私たちは、このようなファイルがあります:示されたファイルの最初の列は、複数の値が続き、同じである
G135b CH2O+HCO=O2+C2H3
R020b 2CO+H=OH+C2O
R021b 2CO+O=O2+C2O
と(私は今のアクセスをカント、申し訳ありません)結果ファイルを。彼らは同じ順序ではありません。 ここでは、結果ファイルをループして、最初の列の値を取得し、示されたファイルで検索し、その行に反応ラベルを追加します。
結果ファイルのすべての行をループして、一時変数の最初の列の値を取得する方法はありますか? 私はこのように、この変数を使用したい:
grep -r '^$var' shownfile | awk '{print $2}'
(バックこのような何かを与える:CH 2 O + HCOを= O2 + C 2 H 3)を私はResult-にその行の結果を追加するにはどうすればよい
ファイル?
編集:これまで
G135b : 0.178273 C H 2 O + H C O = O 2 + C 2 H 3
:
G135b CH2O+HCO=O2+C2H3
である私も、このようなファイルから行くためにスクリプトを書いた:
#!/bin/bash
file=$(pwd)
cd $file
# echo "$file"
cut -f1,3 $file/newfile >>tmpfile
sed -i "s/://g" tmpfile
sed -i "s/ //g" tmpfile
cp tmpfile newfile
- ファイル内でcutコマンドを実行するにはどうすればよいですか? sedの-iと同じです。私の回避策は、現在のディレクトリに別のファイルを作成するので、かなり醜いです。
ありがとうございました:)
問題は、ファイルがソートされていないので、私は最初のファイルの同等の最初の列を検索する必要があります。 – Tuni
@Thunfischあなたはソートしてから次のようにjoinを使うことができます: 'join <(sort -k 1 data)<(sort -k 1 result_file)' – ritesht93
私はジョイントコマンドをチェックしました。ラベルファイルに存在しない結果ファイル内の反応。だから、その最初のケースがポップアップすると、すべてのラベルが台無しになります – Tuni