使っています
a=`head -1 Rt.in`
ファイルから最初の値を取得し、それを変数として保存し、同じ変数を使用してtail -$a
入力の最後の行を末尾に表示します。しかし、エラーが発生します:
tail: illegal option -- -53\r.
入力ファイルには、3 行目以降に 4 つの列があります。
以下は私が使用しているスクリプトの一部です:
a=`head -1 Rt.in`
echo $a
tail -$a Rt.in
出力で表示されるエラーは次のとおりです:
tail: illegal option -- -53\r
入力ファイルの一部は次のようになります。
53
FEPXUU
H 9.155963 1.289174 11.531518
H 9.004353 2.726286 11.683448
N 11.762550 3.890769 11.785241
N 10.610393 3.635048 9.544268
N 10.745642 1.175050 9.076323
N 13.210069 2.309946 9.848128
N 12.319480 0.955257 11.800435
C 12.359945 3.942548 12.929277
C 11.267322 5.027779 11.274755
H 9.052185 4.031311 6.865735
C 10.031631 3.303244 8.416945
C 10.093512 1.894663 8.164740
C 9.546565 1.312421 7.090592
.
.
.
このような行は 53 個あります。
なぜこのエラーが発生するのか、また、どうすればこのエラーを除去できるのかを教えていただけますか?
ターミナルでパイプを使用して上記のスクリプトを直接実行すると、次のようなエラーが表示されtail: -: No such file or directory
、その後にいくつかの原子のリストが表示されます。
答え1
行数はパラメータではありません。次のようになります。
tail -n $a Rt.in
これで、ファイルの最初の行で定義されている最後の行の数を取得できます。これはコマンド-n
でも使用する必要がありますhead
。