前提・実現したいこと
ファイルの中の文字列を読み取って、複数条件で当てはまる行数をカウントしたいと思っています。
発生している問題・エラーメッセージ
下記の流れで文字列を変数に入れたのですが、grepによる検索が出来ません。
該当のソースコード
Shell
1cut -f 1 -d " " data.txt >data2.txt 2cut -f 1-3 -d "-" data2.txt > data3.txt 3sort data3.txt | uniq > data4.txt 4x='sed -n 1p data4.txt' 5grep -c "$x"data.txt | grep "A"
最後のコードでand検索をしようとしているのですが、上手くいきません。
上記のdata.txtは
Tokyo-01-000001-0.JPG 10 A
Tokyo-01-000001-1.JPG 10 A
Tokyo-01-000001-10.JPG 10 B
Tokyo-01-000001-11.JPG 10 A
・
・
・
Tokyo-01-000001-15.JPG 10 A
Tokyo-01-000001-2.JPG 10 B
Tokyo-01-000001-3.JPG 10 A
・
・
・
Tokyo-01-000001-9.JPG 10 A
Tokyo-02-000001-0.JPG 10 B
Tokyo-02-000001-1.JPG 10 B
・
・
・
Osaka-01-000001-0.JPG 10 A
・
・
・
と言ったように、画像ファイルの名前、数字、カテゴリーというような内容になっています。
このうち、Tokyo-01-000001やTokyo-01-000002、Osaka-01-000001のようなファイルの先頭の部分を読み取り、それらが同じ画像の中でカテゴリーがAに属するものがそれぞれいくらあるのかを調べたいです。具体的には
Tokyo-01-000001 4
Tokyo-01-000002 16
・
・
・
Osaka-01-000001 2
・
・
・
のような感じに出来たら良いなと思っております。
当方が初心者であるため、非常に回りくどいやり方になっていると思います。実装は出来ていないのですが、x='sed -n 1p data4.txt'の1pの部分をfor文のようなものを使えば出来るのではないかと言うふうに考えております。
誤りの修正方法及び、もっとスマートな記述方法があれば、是非教えて頂きたいです。
試したこと
上記のようなコマンドで実現しようとしましたが、途中で止まっております。
補足情報(FW/ツールのバージョンなど)
OSはUbuntuの16.04です。
ご教示よろしくお願いします。