8つの "ATOMIC_POSITIONS"文字列を含むtxtファイルがあり、それぞれに;
AtomicPos=$(grep -n "ATOMIC_POSITIONS" hw1_out_si_wire.txt)
echo $AtomicPos
私に最後のものだけを与えた。
4779:ATOMIC_POSITIONS (bohr)
4779は行番号、最後の行です。実際、その後は最後の「ATOMIC_POSITIONS」以降の行を取得しようとしましたが、最後の行を取得しようとしましたが、最後の行を直接提供するので、次のように続けます。
$NtL=262
i=1
until [ $i == $NtL ]
do
Pos=$(grep -A $i ATOMIC_POSITIONS hw1_out_si_wire.txt)
echo $Pos
i=$(expr $i + 1)
unset Pos
done
しかし、実行すると、最初の「ATOMIC_POSITIONS」から始まり続けます。
誰かがこれがなぜ説明できますか?
答え1
grep 出力を配列に読み込むには、次の変更を行う必要があります。
AtomicPos=$(grep -n "ATOMIC_POSITIONS" hw1_out_si_wire.txt)
到着
AtomicPos=( $(grep -n "ATOMIC_POSITIONS" hw1_out_si_wire.txt) )
これは一致するすべてのパターンを持ち、AtomicPos
配列を繰り返して各要素を印刷します。