内容は次のようなファイルがあります。
ae-scc-san-vserver01 /vol/ae_drac02_1_oradminvg_vol/ae_drac02_1_oradminvg_lun hdisk0 fcs0 FCP 150g C
ae-scc-san-vserver01 /vol/ae_drac02_1_rootvg_vol/ae_drac02_1_rootvg_lun hdisk1 fcs0 FCP 100g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskcrs03SVC_vol/ae_drac02_1_2_hdiskcrs03SVC_lun hdisk11 fcs0 FCP 16.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata01SVC_vol/ae_drac02_1_2_hdiskdata01SVC_lun hdisk12 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata02SVC_vol/ae_drac02_1_2_hdiskdata02SVC_lun hdisk13 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata03SVC_vol/ae_drac02_1_2_hdiskdata03SVC_lun hdisk14 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata04SVC_vol/ae_drac02_1_2_hdiskdata04SVC_lun hdisk15 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata05SVC_vol/ae_drac02_1_2_hdiskdata05SVC_lun hdisk17 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata06SVC_vol/ae_drac02_1_2_hdiskdata06SVC_lun hdisk18 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata12SVC_vol/ae_drac02_1_2_hdiskdata12SVC_lun hdisk19 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata13SVC_vol/ae_drac02_1_2_hdiskdata13SVC_lun hdisk20 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata14SVC_vol/ae_drac02_1_2_hdiskdata14SVC_lun hdisk21 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata15SVC_vol/ae_drac02_1_2_hdiskdata15SVC_lun hdisk22 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata16SVC_vol/ae_drac02_1_2_hdiskdata16SVC_lun hdisk23 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata17SVC_vol/ae_drac02_1_2_hdiskdata17SVC_lun hdisk24 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata18SVC_vol/ae_drac02_1_2_hdiskdata18SVC_lun hdisk25 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata19SVC_vol/ae_drac02_1_2_hdiskdata19SVC_lun hdisk26 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata20SVC_vol/ae_drac02_1_2_hdiskdata20SVC_lun hdisk27 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata21SVC_vol/ae_drac02_1_2_hdiskdata21SVC_lun hdisk28 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata22SVC_vol/ae_drac02_1_2_hdiskdata22SVC_lun hdisk29 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_swapvg_vol/ae_drac02_1_swapvg_lun hdisk3 fcs0 FCP 32.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskdata23SVC_vol/ae_drac02_1_2_hdiskdata23SVC_lun hdisk30 fcs0 FCP 250g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskfra01SVC_vol/ae_drac02_1_2_hdiskfra01SVC_lun hdisk31 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskfra02SVC_vol/ae_drac02_1_2_hdiskfra02SVC_lun hdisk32 fcs0 FCP 240.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_u01vg_vol/ae_drac02_1_u01vg_lun hdisk4 fcs0 FCP 170.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_exportsvg_vol/ae_drac02_1_exportsvg_lun hdisk5 fcs0 FCP 100g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskcrs01SVC_vol/ae_drac02_1_2_hdiskcrs01SVC_lun hdisk6 fcs0 FCP 16.0g C
ae-scc-san-vserver01 /vol/ae_drac02_1_2_hdiskcrs02SVC_vol/ae_drac02_1_2_hdiskcrs02SVC_lun hdisk7 fcs0 FCP 16.0g C
サーバー名をキャプチャする必要があります。で始まり、hdisk
で終わりますSVC
。私は以下を試しました:
sed 's/^*hdisk(.*)SVC.*/\1/' filename
次のエラーが発生します。
sed: 1: "s/^*hdisk(.*)SVC.*/\1/": \1 not defined in the RE
誰かがそれをキャプチャする方法を助けることができますか?
答え1
問題がhdisk...SVC
発生しました二重行に.*
あり、貪欲。
GNU grepがある場合は、この-P
オプションを使用して貪欲ではない一致を取得できます。
grep -oP '(?<=hdisk).+?(?=SVC)' file | sort -u
出力
crs01
crs02
crs03
data01
data02
data03
data04
data05
data06
data12
data13
data14
data15
data16
data17
data18
data19
data20
data21
data22
data23
fra01
fra02
答え2
角かっこをエスケープする必要があります。また、hdiskとSVCの間の複数の文字を一致させるには、アスタリスクまたは他の方法を使用する必要があります。たとえば、
sed 's/^hdisk\([^\/]*\)SVC.*/\1/' filename
答え3
awk
- ベースの方法を使用することもできます。
GNU Awkの使用:
awk 'match($2,/^\/vol[[:print:]]*hdisk([^_]+)SVC/,v) {print(v[1])}' filename
2番目の列にパターンを含むすべての行と一致し、/vol<...>hdisk<...>SVC<...>
それらの間の文字列を印刷します。hdisk
最初 SVC
、下線が_
除外されたためです。
他の方法(携帯可能でなければなりません)
awk 'split($2,v,/hdisk|SVC/)>1 {print v[2];next}' filename
フィールド区切り記号を使用して2番目の列を複数のフィールドに分割し、複数のフィールドがhdisk
見つかっSVC
た場合は2番目のフィールドを印刷します。