hdparm出力からシリアル番号を抽出する

hdparm出力からシリアル番号を抽出する

ログファイルの使用を自動化shredし、出力をログファイルに保存しようとしています。現在、以下を使用してシリアル番号を手動でコピーしています。

hdparm -I /dev/sd? | grep 'Serial\ Number'

前にある「シリアル番号」テキストの代わりに番号を教える方法があることを知っていますが、grep方法がわかりません。私に役立つ reg 式を知っている人はいますか?

答え1

awk代わりに試してみてくださいgrep

hdparm -I /dev/sd? | awk '/Serial Number/ { print $3 }'

または、デフォルトのスペースを許可する代わりに、区切り文字を指定してください。

hdparm -I /dev/sd? | awk -F':' '/Serial Number/ { print $2 }'

答え2

xkcdの記事でPerlに言及したので、Perlソリューションを見てみましょう。

hdparm -I /dev/sd? | perl -nle '/Serial Number:\s+(.+)$/ && print $1'

awk他の答えの解決策のPerlバージョン:

hdparm -I /dev/sd? | perl -anle '/Serial Number:/ && print $F[2]'

答え3

努力する

hdparm -I /dev/sd? | grep -oP 'Serial Number:\s*\K.*'

これは以下を使用します。アクティブバックビュー必要な文字列の前のパターンを無視します。Serial Number:\s*

答え4

sed?

hdparm -I /dev/sd? | sed -n 's/^.*Serial\ Number:  *\(.*\)$/\1/p'

(sedを使用してこれを行うには多くの方法があります。これが私の好きな方法です。デフォルトの印刷を抑制し、行の目的の部分を一致させ、行全体をそれに置き換えて印刷します。)

関連情報