リモートSSHセッションでawkを使用して特定の列を印刷するには?

リモートSSHセッションでawkを使用して特定の列を印刷するには?

使用するとき

df -h | grep /dev/root | awk '{print $5}'

PiでSDカード使用量を取得しました。78%

しかし、私が使うとき

/usr/bin/ssh -i /path/to/key user@server "df -h | grep /dev/root | awk '{print $5}'"

別のコンピュータから以下を取得します。

/dev/root       7.2G  5.3G  1.6G  78% /

いっぱいdf -h:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  5.3G  1.6G  78% /
devtmpfs        364M     0  364M   0% /dev
tmpfs           368M   68K  368M   1% /dev/shm
tmpfs           368M  5.2M  363M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           368M     0  368M   0% /sys/fs/cgroup
/dev/mmcblk0p1   60M   21M   40M  35% /boot
tmpfs            74M  4.0K   74M   1% /run/user/1000

ベストアンサー1

引用の問題があります。$5間違った時間に解釈されています。少なくとも2つの解決策があります:

  1. \例えば$;

    /usr/bin/ssh -i /path/to/key user@server "df -h | grep /dev/root | awk '{print \$5}'"
    
  2. リモートで実行しますdfが、grepローカルで実行しますawk。例えば

    /usr/bin/ssh -i /path/to/key user@server df -h | grep /dev/root | awk '{print $5}'
    

FWIW、2番目のオプションのバージョンを実行しますが、マージしgrepawk

/usr/bin/ssh -i /path/to/key user@server df -h | awk '/\/dev\/root/ {print $5}'

おすすめ記事