2016-04-11 5 views
0

"dig ns google.com"を実行するスクリプトを作成しています。回答セクション。変数から最初のn行と最後のn行を削除するにはどうすればよいですか? '

これまでのところ私が持っている:

#!/bin/bash 

echo -n "Please enter the domain: " 
read d 
echo "You entered: $d" 
dr="$(dig ns $d)" 
sr="$(sed -i 1,10d $dr)" 
tr="$(head -n -6 $sr)" 
echo "$tr" 

理論的には、これは動作するはずです。 sedとheadコマンドはそれぞれスクリプトの外側で個別に動作し、それぞれ最初の10個と最後の6個を切り捨てますが、それらをスクリプトの中に入れたときにsedはエラーを返して、その変数をコマンドではなく、入力します。エラーは次のとおりです。

sed: invalid option -- '>' 

これまで入力として変数を読み取る方法が見つかりませんでした。私はそれを ""と ""で囲んでみましたが、うまくいきません。私はこの完全なbashスクリプトのことを初めて知っています。明らかにどんな助けも素晴らしいでしょう!

答えて

1

あなたは、例えばパイプに代わり、それらを変数にラインを割り当てるしている

seq 25 | tail -n +11 | head -n -6 

と配列25を置き換える最初の10と最後の6行を削除し、あなたのケースでは19 に11から出力されますあなたのスクリプト

dig ns "$d" | tail -n +11 | head -n -6 

エコーも不要です。

+0

唯一の問題は、結果の長さをいつも知ることができないため、底から始まる特定の番号を実行できるようにしたかったということです。 ご迷惑をおかけして申し訳ありませんが、私は間違いなくこれをオプションとして検討します。 – Egrodo

+0

6が底部から数えられる。これらはhead/tailの '-n'バージョンです。 – karakfa

+0

ああ、わかりませんでした、おっと。私はそれを試してみるよ、ありがとう! – Egrodo

関連する問題