sed 内部 sed 問題

sed 内部 sed 問題

sedコマンドで文字列を解析しようとしてエラーが発生します。

sed -e "/pd begin $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})",/pd end $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/p /tmp/hp-raid-data-harvester.out

文字列 "3:1I:1:1" の最初の ":" を置き換える必要があります。連続している必要があり、以前は変更できません。文字列はデータベースの文字列$ 1から取得されます。

hp-raid-data ファイルは次の行にあります。

### pd begin 3 2I:1:1 ###

Smart Array P410 in Slot 0

   array B

      physicaldrive 2I:1:1
         Port: 2I
         Box: 1
         Bay: 4
         Status: OK
         Drive Type: Data Drive
         Interface Type: SATA
         Size: 3 TB
         Rotational Speed: 7200
         Firmware Revision: CC4H
         Serial Number:             Z1F21GLG
         Model: ATA     ST3000DM001-9YN1
         SATA NCQ Capable: True
         SATA NCQ Enabled: True
         Current Temperature (C): 33
         Maximum Temperature (C): 42
         PHY Count: 1
         PHY Transfer Rate: 3.0Gbps


### pd end 3 2I:1:1 ###

ベストアンサー1

/コンマの前に正規表現を終了するには区切り文字が必要です。そして、sed両方の正規表現にスペースがあるため、式全体のパラメータの周りに引用符が必要です。

sed -e "/pd begin $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/,/pd end $(echo 3:1I:1:1|sed 0,/:/{s/:/' '/})/p" /tmp/hp-raid-data-harvester.out
                                                      ^                                               ^

おすすめ記事