テキストをフィルタリングして特定の場所の空白行を削除する方法

テキストをフィルタリングして特定の場所の空白行を削除する方法
# lshw -c ネットワーク - バス情報
バス情報機器カテゴリの説明
================================================== ======
pci@0000:03:00.0 enp3s0 ネットワーク I210 ギガビットネットワーク接続
pci@0000:04:00.0 mec_test_1 ネットワーク I350 ギガビットネットワーク接続
pci@0000:04:00.1 mec_test_2 ネットワーク I350 ギガビットネットワーク接続
pci@0000:04:00.2 mec_test_3 ネットワーク I350 ギガビットネットワーク接続
pci@0000:04:00.3 mec_test_4 ネットワーク I350 ギガビットネットワーク接続
pci@0000:b5:00.0 ネットワーク Intel Corporation
pci@0000:b5:00.1 ネットワーク Intel Corporation
pci@0000:b5:00.2 mec_test_5 ネットワーク Intel Corporation
pci@0000:b5:00.3 enp181s0f3 ネットワーク Intel Corporation

デバイススペースを渡すにはどうすればよいですか?良い

バス情報機器カテゴリの説明
================================================== ======
pci@0000:03:00.0 enp3s0 ネットワーク I210 ギガビットネットワーク接続
pci@0000:04:00.0 mec_test_1 ネットワーク I350 ギガビットネットワーク接続
pci@0000:04:00.1 mec_test_2 ネットワーク I350 ギガビットネットワーク接続
pci@0000:04:00.2 mec_test_3 ネットワーク I350 ギガビットネットワーク接続
pci@0000:04:00.3 mec_test_4 ネットワーク I350 ギガビットネットワーク接続
pci@0000:b5:00.2 mec_test_5 ネットワーク Intel Corporation
pci@0000:b5:00.3 enp181s0f3 ネットワーク Intel Corporation

ベストアンサー1

簡単な方法は、grepに列19で空白以外の文字を見つけるように要求することです。

lshw -c network -businfo | grep -E '^.{18}[^ ]'

このgrepコマンドは行の先頭に固定されたパターンを探し、その後に18のランダムな文字と空白以外の内容が続きます。

または、スペースの代わりにTABがある場合は、次のクラスを使用してください[:space:]

lshw -c network -businfo | grep -E '^.{18}[^[:space:]]'

おすすめ記事