web-dev-qa-db-ja.com

grepの結果をフィルタリングする方法は?

私はスクリプトを書くのが初めてです。ですから、これがシンプルであることを願っています。私が書いているスクリプトは、システム情報を収集し、それをhtmlファイルとして保存するために使用されます。

実行すると:

Sudo lshw -short

システム上のすべてのハードウェアをリストします。

実行すると:

Sudo lshw -short | grep processor

戻ります(ドットはスペースを表します)

/0/4                        ...........................................processor................................................   AMD FX(tm)-6100 Six-Core Processor"

私の質問は、プロセッサの前にあるものをすべて削除する方法です。または、「プロセッサ」の後にあるものだけを表示するにはどうすればよいですか。私はgrepの他のいくつかのオプションを試し、動作するawkコマンドを見つけようとしましたが、失敗しました。

さらに情報が必要な場合はお知らせください。

2
emerikanbloke

PCRE(Perl Compatible Regular Expression)拡張機能をサポートするgrepのバージョンでは、次のことができます。

Sudo lshw -short | grep -Po 'processor\K.*'

-oは一致するテキストのみを印刷することを意味し、\K修飾子は一致するテキストの左にあるものを結果から除外します。

リテラルテキストprocessorに続く空白も削除する場合は、次のようにします。

Sudo lshw -short | grep -Po 'processor\s*\K.*'
5
steeldriver