10秒ごとに100から999の間の任意の数を印刷するスクリプトがある場合、その情報を.txtファイルにどのように収集しますか?中央の数だけを集めることも可能ですか?例:「659」から「5」を収集します。
答え1
スクリプトの端末出力を保存できます。スクリプトが毎回数字を印刷する場合、出力をファイルにリダイレクトすると数字が保存されます。
script > file.txt
。
script >> file.txt
file.txt
次に、y中心の5つの結果のみを表示します。
len=$(wc -l < file.txt);
#to store the length of file
len=$((($len/2)-3));
#to get the middle of file
tail -n $len file.txt | head -n 5 ;
#show 5 lines from midlle of file
答え2
これにはいくつかのステップがあります。まず、bash出力をテキストファイルに書き込む必要があります。あなたはそれを使用することができますtee
。(マンページ)
スクリプトを「myscript」と呼びます。
ご意見を次の住所にお送りください。
tee /path/to/myscript.txt
これにより、bash入力の出力が次に書き込まれます。/path/to/myscript.txt
だからそれは
sh /path/to/myscript.sh | tee /path/to/myscript.txt
で標準テキスト処理を実行できます/path/to/myscript.txt
。
「中央値」を使用すると、行の数が偶数であるか奇数であるかによって異なります。ただし、sedを使用して目的の行を印刷できます。
sed -n 'x,yp' /path/to/myscript.txt
印刷したい行間隔の境界はどこx
ですか?y
答え3
script | tee path/to/file.txt
script | cut -c 2
script | cut -c 2 | tee path/to/file.txt