2010-09-01 4 views
4

J'exécutez la commande suivante sur Sun Solaris (sa course OK sous Linux) mais pas sur Sun SolarisSolaris équivalent de l'option -o de grep sur Linux

name="(WORD = (TCPIP = (PROTOCOL = TCP)(WORD = ALIAS_NAME)(PORT = 10234))" 
echo $name | grep -o "(WORD = (TCPIP = (PROTOCOL = TCP)(WORD = ALIAS_NAME)(PORT = 10234))" 
grep: illegal option -- o 
Usage: grep -hblcnsviw pattern file . . . 

ma question que la même option sur Sun Solaris comme l'option grep -o (pour correspondre à la chaîne capture)

Lidia

Répondre

3

Solaris grep ne semble pas avoir une telle option. Si vous avez juste besoin de ceci pour fonctionner sur des boîtes Solaris, peut-être que GNU grep est installé? (Par exemple, celui-ci l'a sous /usr/local/gnu/bin/grep).

Si vous avez besoin de ceci pour fonctionner sous n'importe quel solaris, vous ne pouvez pas utiliser grep. Peut-être sed et awk peuvent être utilisés?

0

vous pouvez utiliser nawk la "vieille école". Aller sur chaque mot et vérifiez contre vos motifs

nawk '{ 
    for(i=1;i<=NF;i++){ 
     if($i == "your pattern") { 
      print $i 
     } 
    } 
}' file 
1

Sun^W^WOracle de grep ne le fait pas. Vous devez télécharger la version grep de GNU, de préférence à partir du sunfreeware.com.

0

Dans Solaris, (OpenSolairs, OpenIndiana, etc.), vous devez utiliser une commande comme ceci:

find . | xargs grep 'somestring' 

que vous obtiendrez ce que vous recherchez.