一行で一意の単語を見つける方法

一行で一意の単語を見つける方法

文字列があり、50003 50003 50003 50001それを別のファイルとして処理した後、結果の文字列が変数に保存されます。今、この変数から一意の単語を取得したいと思います。50003 50001これを行う方法のように?

ベストアンサー1

tr、sort、uniqを介してパイプできます。たとえば、コマンドプロンプトで次のことをテストできます。

 $ var1='50003 50003 50003 50001 50003'

次に、

 $ echo $var1 | tr ' ' '\n' | sort | uniq
50001
50003

ご覧のように、後でソートされた入力が必要な操作を実行したい場合に備えて、ソートされたユニークなコンテンツを出力します。

修正する

コメントの他の質問に対して結果を変数に保存するには、スクリプトで次のことを実行できます。

var2="$( echo $var1 | tr ' ' '\n' | sort | uniq )"
  • $(...bash コマンドの置換で、)内容をコマンド出力に置き換えます。$(...)

$var2したがって、後でスクリプトから端末に出力するには、次のようにします。

echo "$var2"
  • $var2各結果を連続して1行で表示するには、引用符で囲みます。
  • そうでなければ、引用符なしでecho基本的$var2に各「単語」を別々の引数として解釈し、スペースを含む1つずつ印刷するので、最終的に1つの長い文になります。

また、出力をファイルに保存できることを覚えておいてください~/unique_results.txt。たとえば、次のようになります。

echo $var1 | tr ' ' '\n' | sort | uniq  > ~/unique_results.txt
  • >ファイルリダイレクトは、標準出力を指定されたファイルにリダイレクトすることです。

おすすめ記事