コマンドの列を新しいコマンドに分割

コマンドの列を新しいコマンドに分割

自動的にデバイスを生成するスクリプトを作成しようとしています。長い道のりが来たけど詰まった

ソースファイルは次のとおりです。

dev1 size 1024
dev2 size 1024
dev3 size 1024
dev4 size 512
dev5 size 512

スクリプトでは、ソースファイルは$ INVFILE変数です。その後、コマンドを発行します。

cat $INVFILE | awk '{print $3}' | sort | uniq -c

次の出力を提供します。

   3 1024
   2 512

次のコマンドでは、この出力を使用してさまざまなサイズと数を使用したいと思います(この例では最初の行のみを使用しますが、スクリプトでは関数に「for i in」を使用したいと思います)。

create dev count=3 size=1024MB

スクリプトでこれをどのように実行できますか? 「for i in」機能を置き換えるより簡単な方法はありますか?

ベストアンサー1

awkは全部できます。

努力する

awk '{ d[$3]++ ; } 
     END { for ( c in d ) 
        printf "create dev count=%d size=%dMB\n",d[c],c ;}' $INVFILE

動作する場合:

awk '{ d[$3]++ ; } 
   END { for ( c in d ) 
         printf "create dev count=%d size=%dMB\n",d[c],c ;}' $INVFILE |
bash

おすすめ記事