Linux用の出力があります。
Size: 8192 MB
Locator: CPU0
Bank Locator: DIMM01
Size: No Module Installed
Locator: CPU0
Bank Locator: DIMM02
Size: 8192 MB
Locator: CPU0
Bank Locator: DIMM03
Size: No Module Installed
Locator: CPU0
Bank Locator: DIMM04
Size: 8192 MB
Locator: CPU0
Bank Locator: DIMM05
Size: No Module Installed
Locator: CPU0
Bank Locator: DIMM06
Size: 8192 MB
Locator: CPU1
Bank Locator: DIMM07
Size: No Module Installed
Locator: CPU1
Bank Locator: DIMM08
Size: 8192 MB
Locator: CPU1
Bank Locator: DIMM09
Size: No Module Installed
Locator: CPU1
Bank Locator: DIMM10
Size: 8192 MB
Locator: CPU1
Bank Locator: DIMM11
Size: No Module Installed
Locator: CPU1
Bank Locator: DIMM12
DIMM診断用です。 DIMMから「モジュールがインストールされていません」という出力を削除したいと思います。したがって、コマンドを実行すると、次のように表示されます。
Size: 8192 MB
Locator: CPU0
Bank Locator: DIMM01
Size: 8192 MB
Locator: CPU0
Bank Locator: DIMM03
Size: 8192 MB
Locator: CPU0
Bank Locator: DIMM05
Size: 8192 MB
Locator: CPU1
Bank Locator: DIMM07
Size: 8192 MB
Locator: CPU1
Bank Locator: DIMM09
Size: 8192 MB
Locator: CPU1
Bank Locator: DIMM11
「Locator:」と「Bank Locator:」の結果は必ずしも同じではないため、「Size: No memory Installed」を識別してから、次の2行を削除する必要があります。
答え1
扱う改行文字 改行文字記録区切り記号で。 「インストール済みモジュールなし」が含まれていない一致レコード:
awk 'BEGIN { RS="\n\n"; ORS=RS } !/No Module Installed/' dimmsfile
答え2
使用sed
:
sed '/Size: No Module Installed/,/^$/d' file
答え3
これが有効な場合、より簡単なアプローチは、有効なサイズを含む行の情報のみを表示し、その上に2行(または空の行が必要な場合は3行)を含めることです。上記の出力に基づくと、次のように簡単です。
your_output_command | grep -E "Size: [0-9]* MB" -A 2
これは、任意の数の数をSize: [0-9]* MB
表す正規表現を含む行と一致し、一致の後に続く2行も印刷します。[0-9]*
-A 2
DIMMのサイズがMBを超えて報告される可能性がある場合は、正規表現を受け入れるように更新できます。たとえば、MBとGBの両方が可能な場合は、次のようになりますyour_output_command | grep -E "Size: [0-9]* [GM]B" -A 2
。
逆方向の一致に基づいてコンテンツをフィルタリングする必要がある場合は、次の質問をスローしてください。逆方向にgrepして「前」および「後」の行を除外する方法可能な答えがありますが、必要なものを一致させ、それに基づいて追加の行を含めるよりも複雑です。
Malte Skoruppaのコメントに基づいて回答が更新されました。