0

私は家での宿題でここにいます。たぶん、あなたは何を読むべきか、または次のものを作成するためにどのコマンドを使用できるかをアドバイスするでしょう:

次のように動作するシェル スクリプト テストを作成します。

  1. スクリプトは、ターミナル画面に次のメッセージを表示します: ファイル名を入力してください (ワイルドカード OK)
  2. スクリプトは名前のリストを読み取ります。
  3. 適切なファイルであるリスト上の各ファイルについて、ファイル内で最も頻繁に使用される 10 個の単語を、最も頻繁に使用されるものから順に並べた表を表示します。カウントを含めます。
  4. ユーザーがファイルの終わりを示すまで、手順 1 ~ 3 を何度も繰り返します。これは、単一文字の Ctrl-d をファイル名として入力することによって行われます。

これが私がこれまでに持っているものです:

#!/bin/bash
echo 'Enter file names (wild cards OK)'
read input_source
if test -f "$input_source"
then 
4

3 に答える 3

1

いくつかのヒント:

  1. 完全な bash マニュアルにアクセスできます。最初は気が遠くなりますが、非常に貴重なリファレンスです -- http://www.gnu.org/software/bash/manual/bashref.html

  2. コマンド ラインで bash ビルトインに関するヘルプを取得できます。help read

  3. このreadコマンドは、オプションを使用してプロンプトの出力を処理でき-pます (前のヒントを参照) 。

  4. whileループを使用して最後のステップを実行します。

    while read -p "the prompt" filenames; do 
        # ...
    done
    
于 2013-04-19T21:42:24.030 に答える
1

私は通常、何かを学ぶための進歩や努力を示さずに宿題の質問を無視していますが、あなたは美しく生意気なので、例外を設けます.

ここにあなたが欲しいものがあります

while read -ep 'Files?> ' files
do
    for file in $files
    do
        echo "== word counts for the $file =="
        tr -cs '[:alnum:]' '\n' < "$file" | sort | uniq -c | tail | sort -nr
    done
done

そして今=少なくとも上記が何をしているのか理解してみてください...

Ps: 締めくくりに投票...

于 2013-04-19T22:01:35.463 に答える
1

ファイル内で最も頻繁に使用される 10 の単語を見つける方法

仮定:

  1. 指定されたファイルには、1 行に 1 単語が含まれます。
  2. ファイルは巨大ではないため、効率は主要な関心事ではありません。

とを使用sortuniqて、ファイル内の一意でない値の数を見つけてからtail、最後の 10 個を除くすべてを切り捨て、逆数値ソートでそれらを降順に並べ替えることができます。

sort "$afile" | uniq -c | tail | sort -rd
于 2013-04-19T19:35:30.913 に答える