2番目のコマンドでは、「grep」の出力を変数として使用します。

2番目のコマンドでは、「grep」の出力を変数として使用します。

現在、特定のタスクに必要なデータを収集するために使用する2つのbashコマンドライン文字列があります。私は仕事を簡素化しようとしていますが、スクリプトを使用せずに1つのコマンドだけを使用してデータを収集しようとしています。

cat最初にファイルを作成してgrepコマンドをパイプすると、整数値のみが表示されます。次に、その値を方程式にコピーして貼り付けます。方程式は、grep最初のコマンドの ped 値を除いて、常に同じままです。

  • 最初のコマンド: cat /proc/zem0 |grep -i isrs|grep -Eo '[0-9]+$'
  • 2番目のコマンド: echo $(( (2147483633-"**grep value**")/5184000 ))

私はこれを達成する方法について混乱しています。これについてのご案内をいただきありがとうございます!

ベストアンサー1

これはコマンドです:

echo $(( (2147483633 - $(grep -i isrs /proc/zem0 | grep -Eo '[0-9]+$') )/5184000 ))

簡略化を行う方法

まず、次のパイプラインを検討してください。

cat /proc/zem0 |grep -i isrs`

これは次のように単純化できます。

grep -i isrs /proc/zem0

したがって、最初のコマンド全体は次のようになります。

grep -i isrs /proc/zem0 | grep -Eo '[0-9]+$'

最後の変更は、コマンド置換を使用して最初のコマンドを2番目のコマンドに置き換えることです$(...)。したがって、次のものを置き換えます。

echo $(( (2147483633-"**grep value**")/5184000 ))

そして:

echo $(( (2147483633-$(grep -i isrs /proc/zem0 | grep -Eo '[0-9]+$'))/5184000 ))

別の単純化

grepGNUなどのPerlスタイルの正規表現をサポートしている場合は、grepコメントでjimmijが提案したようにさらに単純化できます。

echo $(( (2147483633-$(grep -Pio 'isrs.*?\K[0-9]+$' /proc/zem0))/5184000 ))

おすすめ記事