アプリ版:「スタンプのみでお礼する」機能のリリースについて

UNIXプラグラミングについての質問です。

ファイルの中にある英単語を長い順に表示させる方法がわかりません。
もし分かる方がいらっしゃったら教えてください、お願いします

質問者からの補足コメント

  • ファイル名は/use/share/duct/words です。
    awk ‘{print length($1)}’ /use/share/dict/words l sort -r

    の操作でファイルの中の単語を文字列にして、それを長い順に並び替えるというとこまでして、その後の並び替えた文字列を元の単語に戻すという作業の仕方がわかりません。

      補足日時:2019/05/17 14:07

A 回答 (8件)

テキストファイルを、単語毎の行に置き換え、重複する単語を除き、単語の文字数を数え、文字数で降順に並び替え、単語のみ切り出す


を行う UNIX シェルスクリプト

cat FILE_NAME \
| sed -r -e 's/\s+/\n/g' \
| sort | uniq \
| awk '{print length($1), $1}' \
| sort -n -r \
| awk '{print $2}'
    • good
    • 0

コマンド一発ではなくファイルを介してる上に、原理動作だけだけど。


https://pastebin.com/LCUmhV7s
awkで長さリストを作り、それをpasteで単語リストと合成し、ソート後に長さを削除する。
    • good
    • 0

で、UNIX というのはOSの名前なので、「UNIXプログラミング」と言われても、何を使ってプログラミングしていいのかがわかりません。


極端な話、「C言語で自作したコマンド」というのも有りになってしまいます。
何か条件があるのなら、具体的に示してください。

Perlはほぼ全ての環境に入っているだろうから、
 単語のリストを用意→文字列長でsort→出力
という簡単なスクリプトでできます。
    • good
    • 0

数字から元の単語にするのは無理です。


文字数と、単語を併記して、ソート後に文字数部分を削除すればいいのでは?
    • good
    • 0

言語はawkを使用するのが条件ですか?(perl,rubyなら簡単にできますが・・・)


ファイルの内容ですが1行に1単語ですか?
    • good
    • 0

> ファイルの中にある英単語を長い順に表示させる方法がわかりません。



文字の内容は関係無く単純い文字列長だけに注目すればよいのですか?
そのファイルはテキストファイルで各レコードはどのような構造ですか? 1レコード1単語なのでしょうか?
課題の内容を明確にし、他者に誤解無く伝わる書き方をしてください。


> の操作でファイルの中の単語を文字列にして

「単語を文字列にする」とはどういう意味でしょう?
愛単語は「a」を除いて1つの単語は複数のアルファベット・・・つまりは文字列からなっています。プログラム処理としては1文字の単語も1文字の文字列と言えます。


> その後の並び替えた文字列を元の単語に戻すと

これは具体的にどういうことを言われていますか?
課題の入力形式と出力形式について一切書かれていないので読み手には何も伝わりません。(;_;)

参考まで。
    • good
    • 1
この回答へのお礼

返信ありがとうございます。
質問内容がわかりにくい書き方になってしまい申し訳ありません。

/use/share/dict/wordsの中の英単語を単語の長い順に表示させる方法を示せ、という課題内容です。

ファイル内の英単語をその単語の長さの数字にする→数値化したものを大きい順に並び替える、というところまではできたのですがそれだと
10
10
10
9
9
8



のように数字の羅列になってしまいます。
これを元の英単語に戻す方法がわかりません。

お礼日時:2019/05/17 14:47

>awk ‘{print length($1)}’ /use/share/dict/words l sort -r


まさかのawk...
awkは使ったこと無いので正確なことを言えるか分かりません

>ファイルの中の単語を文字列にして
??
ファイルの中は文字列じゃないの?
それだとこのコードじゃあ全然違うきがしますが
私にはファイルの中にある文字列の文字数を多い順に表示しているように見えます
違っていたらごめんなさい

6
5
5
4
2

のように表示されるのでは

>その後の並び替えた文字列を元の単語に戻すという作業
もう少し丁寧に日本語を書いてください
文字列を元の単語に戻すというのは意味が分かりません
    • good
    • 1

質問が雑すぎる



そもそも言語は、恐らくCだとは思いますが
それすらも書いていない

>ファイルの中にある英単語を長い順に表示させる方法がわかりません。
ファイルの定義すらされていない
txtファイルだとは思いますが、せめてファイル名を
また、英単語は何で区切られているのか、区切りの指定はあるのか、なんでもいいのか

分からないとは何が分からないのか
全部?そんなわけない
#includeも
int mainも
何も書けないわけが無い
途中まで書いたソース、エラーになったソース
何も無いわけがないので、自分で作ったものぐらい書きましょう

この手の丸投げ質問は基本的にまともな回答が付きません
    • good
    • 4
この回答へのお礼

返信ありがとうございます。
自分で作ったものを補足させていただきました。

お礼日時:2019/05/17 14:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!