質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

解決済

1回答

1874閲覧

コマンド出力結果を格納したい

ne-on

総合スコア13

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2017/01/24 21:19

###前提・実現したいこと
Linuxのコマンドにてテキストデータ(test.txt)の中身をgrepである特定文字を検索し、重複した場合はカウントし、sortし、行数をカウントしております。

出力結果

1 2 ●● aa
2 3 ●● ii
3 1 ●● uu
.......

左から順に
行数(1,2,3...)
カウント(2,3,1...は、2回、3回でたという意味)
●● (文字)
aa ii uu (文字)
という結果です。

##これからしたいこと

この結果に対し、それぞれの行数に対し、結果を格納したいです
($1 ,$2といった風に)
行数を$1 カウント値を$2といったものです。

使用言語は、さらに|で繋げるか(awkを使用か?)
Perlで実装といったもので達成したいと考えております。

##+αでやりたいこと
さらに全体の行数をカウントし、その結果を格納したいと思っております。
(コマンドでwc -lで全体の行数をカウントし、$5で格納といったイメージで。)

つたない文章ですが、よろしくお願いします。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
Ubuchum(linux),Perl

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2017/01/25 01:19

タグ「コマンドプロンプト」は関係ないので削除したほうがいいと思います。 (タグの説明より)「コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。」
guest

回答1

0

ベストアンサー

「これからしたいこと」が出力結果のテキストを基にして、フィールドごとに処理するのであればawkでできます。
例えば、各行の1フィールド目(行番号)と2フィールド目(出現数)を表示させるなら

awk '{print $1,$2}' <入力テキスト>

で十分です。
上記の例では表示させるだけですが、awkならばそれ以外の処理や条件分岐もできます。

「これからしたいこと」の方ですが、テキスト全体の合計数を5フィールド目に持たせるのでしょうか?
それには違和感を感じるのですが、例えば「そこまでの行数の累計」を出すサンプルを書くとすると以下のような感じです。

awk '{i=i+$2;print $1,$2,$3,$4,i;}' <入力テキスト>

こんな出力になります。

1 2 ●● aa 2
2 3 ●● ii 5
3 1 ●● uu 6

kanegon15さんの結果イメージがつかみ切れていない部分もあるので、質問の意図と違っていたらご指摘ください。

投稿2017/01/24 23:50

編集2017/01/26 06:33
ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ne-on

2017/01/26 06:03 編集

ynakanoさん アドバイスありがとうございます。 awkを使用しようとしたところ エラーがでてしまい、次の部分へすすめられない状態です。 $awk '{print $1,$2}' add_test コマンド '{print'は見つかりませんでした .. {print:コマンドが見つかりません ファイルの中身は前提・実現したいことの出力結果の中身と同じになっております。 エラーの原因をググりましたが、解決策が見つかりませんでした・・ふつうはエラーは出ないのですかね汗
ynakano

2017/01/26 06:33

もしかするとawkの前の"$"も書いてませんか? 手元で試したのですが、そうしたらお示しのエラー(に近いもの)が出ました。 だとしたら申し訳ないです。 $はプロンプトマークなので入力しません。 回答を直しておきます。
ne-on

2017/01/26 22:43

ynakanoさん 違うPCにて実施したら、awkコマンドが使えるようになりました。 この投稿の問題も解決ができました。ありがとうございます(_ _)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問