最も一般的なパスワードとその頻度のリストがあります。これは、次の形式の長いリストです。
59462 password
49992 iloveyou
33919 princess
...
30 yahoo123
明確に言えば、このリストによると、最も一般的なパスワードは "password"であり、59,462人がこのパスワードを持っています。 2番目に一般的なパスワードは「iloveyou」で、頻度は49,992です。
問題は、2つの整数入力を使用することです。最初は2番目より小さくなければなりません(スクリプトが確認する必要があります)。スクリプトは、少なくとも最初の数字と最大2番目の数字の頻度ですべてのパスワードを印刷する必要があります。
私はこの問題について約4時間閉じ込められ、完全に迷子になりました。
これが私が今まで得たものです:
var1=$1
var2=$2
if
[ $one -lt $two ]
then
cat /home/misc/gwrika/cse251/hw3/short-rockyou.txt | awk '^$var1' |
else
echo "please enter the first argument as the smaller number and the second argument as the larger number"
fi
正直なところ、どうやって始めるのか分からない。
ベストアンサー1
私はこれを行うことができます:
low=$1
high=$2
if [ "$low" -lt "$high" ]
then
awk -v low="$low"-v high="$high" '$1 >= low && $1 <= high { print substr($0, index($0, " ")+1) }' /home/misc/gwrika/cse251/hw3/short-rockyou.txt
else
echo "please enter the first argument as the smaller number and the second argument as the larger number"
fi
変数の名前を変更しましたが、そのコアは下限と上限を渡してから、列1がその範囲内にあるかどうかを尋ねる単純なawkスクリプトです。そうであれば、2番目のフィールドを印刷します(最初のスペースの位置に探して、ちょうど渡します)。入力例のように、30 yahoo123
パスワードと頻度を区別する複数のスペースがありますが、パスワードがすべて特定の列で始まる場合は、次のようにします。
awk ... print substr($0, 7) ...
その列から印刷を開始します。