を検索していなかった、私はgrepのは私のPerlスクリプトでは、適切
$tmp=`grep -E -n 'FRAME.*$atom_id'\$'\\s{1,}''$spc_lbl{$all_species}' $file_o_nghb_refine |wc -l`
ところ、$tmp
、$atom_id
、$spc_lbl[]
以下のbashのコードを実行し、$all_species
は、変数や配列の要素です。しかし「トイレ-l」
FRAME 0 11687 Fe 7744AL
FRAME 1 11687 Fe 7744AL
FRAME 2 11687 Fe 7744AL
FRAME 3 11687 Fe 7744AL
FRAME 4 11687 Fe 7744AL
FRAME 5 11687 Fe 7744AL
FRAME 6 11687 Fe 7744AL
FRAME 7 11687 Fe 7744AL
FRAME 8 11687 Fe 7744AL
FRAME 9 11687 Fe 7744AL
FRAME 10 11687 Fe 7744AL
......
を削除する場合は通常、(他のすべてのファイルは、すべてのファイルが中断することなく、私のプログラムによって生成され、一つのファイルを除いて、正しく結果を表示)、結果は上記のコードは、以下のような値を示すだろう1つのファイルを適切に表示できません。実際に、私が直接bashコードを使用すると、
grep 'FRAME 0 11687'$'\s{0,}''Fe' 15x200.lammpstrj.o_neighbors.raw.dat
のいずれかの結果も見つかりませんでした。私が使用する場合
grep 'FRAME.*11687.*Fe' 15x200.lammpstrj.o_neighbors.raw.dat
上記のように表示されます。
何か問題がありますか?スクリプトをどのように改善できますか?これ以外のファイルでも同じスクリプトが動作するのはなぜですか?それ以上の提案は高く評価されるだろう。
を使用することが特にgrep'正しく関与しなければならない 'を呼び出すので、自身 –
何をするかgrepを行うことが可能以上だときのperlのコールはgrepを有するビット奇妙に思えます提供されるよりもはるかに多くのコード。 (注入バグ、エラー処理の欠如) – ikegami