現在、特定のタスクに必要なデータを収集するために使用する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 ))
別の単純化
grep
GNUなどのPerlスタイルの正規表現をサポートしている場合は、grep
コメントでjimmijが提案したようにさらに単純化できます。
echo $(( (2147483633-$(grep -Pio 'isrs.*?\K[0-9]+$' /proc/zem0))/5184000 ))