Need to extract the word after a particular keyword throughout the file..

Hi Everyone,

Need help in extracting the hostname from the below output.

Expected output:

DS-TESTB-GDS-1.TEST.ABC.COM
DS-TESTB-GDS-2.TEST.ABC.COM
....
...
[localhost.STAGE.XYZ.COM] /tmp $ cat -n /tmp/patchreport
     1  /usr/bin/perl /admin/bin/patch/applyPatches.pl --apply_patches --box=DS-TESTB-GDS-1.TEST.ABC.COM --box=DS-TESTB-GDS-2.TEST.ABC.COM --box=DS6-TESTA-APP-1.TEST.ABC.COM --box=DS6-TESTA-ASYNC-1.TEST.ABC.COM --box=DS6-TESTA-ER-1.TEST.ABC.COM --box=DS6-TESTA-MAA-1.TEST.ABC.COM --box=DS6-TESTA-MAPP-1.TEST.ABC.COM --box=DS6-TESTA-MAW-1.TEST.ABC.COM --box=DS6-TESTA-SCAN-1.TEST.ABC.COM --box=DS6-TESTA-SEARCH-1.TEST.ABC.COM --box=DS6-TESTA-SERVICE-1.TEST.ABC.COM --box=DS6-TESTA-TRACKER-1.TEST.ABC.COM --box=DS6-TESTA-WWW-1.TEST.ABC.COM --box=FIN-DEV-UC4DB-1.TEST.ABC.COM --box=MDS-DEV-APP-2.TEST.ABC.COM --box=MDS-DEV-DB-2.TEST.ABC.COM --box=MON-TEST-LOG-3.TEST.ABC.COM --box=MON-TEST-LOGIDX-3.TEST.ABC.COM --box=MOS-DEV-DB-1.TEST.ABC.COM
     2  /usr/bin/perl /admin/bin/patch/applyPatches.pl --apply_patches --box=MCS-DEV-ARDAPP-1.TEST.ABC.COM --box=MCS-DEV-DB-1.TEST.ABC.COM --box=MCS-DEV-IDDIR-1.TEST.ABC.COM --box=MCS-DEV-PASSCENT-1.TEST.ABC.COM --box=MCS-DEV-PASSDB-1.TEST.ABC.COM --box=MCS-DEV-PASSPORT-1.TEST.ABC.COM --box=MCS-DEV-PASSPORT-2.TEST.ABC.COM --box=MCS-DEV-PASSPORT-3.TEST.ABC.COM --box=MCS-GRVDEV-DPOPS-1.TEST.ABC.COM --box=MON-DEV-NMS-1.TEST.ABC.COM --box=XORN.STAGE.XYZ.COM
     3  /usr/bin/perl /admin/bin/patch/applyPatches.pl --apply_patches --box=JMS-DEV-FILE-1.STAGE.XYZ.COM --box=ROGUE.STAGE.XYZ.COM
-

Thiyags.

Please use code tags as required by forum rules!

How about

grep -o "\-\-box=[^ ]*" file | cut -f2 -d=
DS-TESTB-GDS-1.TEST.ABC.COM
DS-TESTB-GDS-2.TEST.ABC.COM
DS6-TESTA-APP-1.TEST.ABC.COM
.
.
.
1 Like

Hi RudiC,

Thanks for the reply, It works good as i expected...
-
Thiyags.

Hello Thiyagoo,

Welcome to forums, please use code tags as per forum rules for commands/codes/Inputs you use in your posts.
Following may help you too in your query.

awk '{for(i=1;i<=NF;i++){match($i,/=.*COM/);if(substr($i,RSTART+1,RLENGTH-1)){print substr($i,RSTART+1,RLENGTH-1)}}}' Input_file

Output will be as follows.

DS-TESTB-GDS-1.TEST.ABC.COM
DS-TESTB-GDS-2.TEST.ABC.COM
DS6-TESTA-APP-1.TEST.ABC.COM
DS6-TESTA-ASYNC-1.TEST.ABC.COM
DS6-TESTA-ER-1.TEST.ABC.COM
DS6-TESTA-MAA-1.TEST.ABC.COM
DS6-TESTA-MAPP-1.TEST.ABC.COM
DS6-TESTA-MAW-1.TEST.ABC.COM
DS6-TESTA-SCAN-1.TEST.ABC.COM
DS6-TESTA-SEARCH-1.TEST.ABC.COM
DS6-TESTA-SERVICE-1.TEST.ABC.COM
DS6-TESTA-TRACKER-1.TEST.ABC.COM
DS6-TESTA-WWW-1.TEST.ABC.COM
FIN-DEV-UC4DB-1.TEST.ABC.COM
MDS-DEV-APP-2.TEST.ABC.COM
MDS-DEV-DB-2.TEST.ABC.COM
MON-TEST-LOG-3.TEST.ABC.COM
MON-TEST-LOGIDX-3.TEST.ABC.COM
MOS-DEV-DB-1.TEST.ABC.COM
MCS-DEV-ARDAPP-1.TEST.ABC.COM
MCS-DEV-DB-1.TEST.ABC.COM
MCS-DEV-IDDIR-1.TEST.ABC.COM
MCS-DEV-PASSCENT-1.TEST.ABC.COM
MCS-DEV-PASSDB-1.TEST.ABC.COM
MCS-DEV-PASSPORT-1.TEST.ABC.COM
MCS-DEV-PASSPORT-2.TEST.ABC.COM
MCS-DEV-PASSPORT-3.TEST.ABC.COM
MCS-GRVDEV-DPOPS-1.TEST.ABC.COM
MON-DEV-NMS-1.TEST.ABC.COM
XORN.STAGE.XYZ.COM
JMS-DEV-FILE-1.STAGE.XYZ.COM
ROGUE.STAGE.XYZ.COM
 

Thanks,
R. Singh

1 Like

Hi,
Just for fun (work under gnu grep):

grep -Po -- '--box=\K[^ ]*' file

Regards.