2010-03-21 7 views
0

J'ai une commande qui répertorie les répertoires d'instances Weblogic sur un serveur. Je souhaite afficher le contenu d'un fichier dans le répertoire parent de chaque répertoire répertorié.Afficher le contenu d'un fichier dans le répertoire parent

Une autre caractéristique serait d'afficher le nom du fichier en plus d'afficher le contenu

/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed -e 's/weblogic.policy//' -e 's/security\///' -e 's/dep\///' | sort 

La sortie de la commande ci-dessus ressemble à ceci

/opt/<some_directory>/<domain_name>/<app_name>/ 
/opt/<some_directory>/<domain_name>/<app_name>/ 

Je veux voir la contenu des fichiers somefile.cf dans les répertoires /opt/<some_directory>/<domain_name>/ soit /opt/<some_directory>/<domain_name>/somefile.cf

Pour le dire simplement, j'ai besoin d'un sed regex pour rep lace le nom du dernier répertoire de la sortie.

J'ai essayé ainsi

/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed -e 's/weblogic.policy//' -e 's/security\///' -e 's/dep\///' | sort | while read -r DIR ; do dirname $DIR ; done | uniq | sed 's/$/\/somefile\.cf/g' 

mais je suis sûr que la partie while et la dernière partie sed peuvent être supprimées facilement à l'aide d'une simple commande sed comme celui-ci

sed -e 's/<regex_for_last_directory_name>/somefile.cf/' 

Répondre

2
/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed -e 's/weblogic.policy//' -e 's/security\///' | sort | while read -r DIR 
do 
    cat "$DIR"/somefile.cf 
done 

ou voulez-vous dire le répertoire d'un niveau?

/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed -e 's/weblogic.policy//' -e 's/security\///' | sort | while read -r DIR 
do 
    cat "$DIR"/../somefile.cf 
done 
+0

Qu'est-ce qui ne va pas avec $ DIR /../ somefile.cf? –

+0

rien à redire. juste glissé mon esprit c'est tout :) – ghostdog74

+0

tandis que lu -r DIR; fais DIR = $ {DIR% * \ /} DIR = $ {DIR% \/*} cat "$ DIR" /somefile.cf; fait a jeté une erreur mais lors de la lecture -r DIR; faire chat "$ DIR" /../ somefile.cf; fait travaillé. Merci. Une idée si xargs pourrait aussi fonctionner pour cela? – Sharjeel

0

chat /usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed -e 's/weblogic.policy//' -e 's/security\///' -e 's/$/somefile.cf/' | sort | uniq

+0

Deux problèmes avec vous répondre. 1) Syntaxiquement faux: J'obtiens une erreur cat: auwwx: Aucun fichier ou répertoire 2) somefile.cf se trouve dans le répertoire parent des répertoires listés. sed -e 's/$/somefile.cf/' ajouterait unfichier.cf dans la liste des répertoires et non dans les répertoires parents de la sortie. – Sharjeel

0

travaux sur 8, peuvent avoir besoin peaufiné pour 10,2

cat $ (/ usr/ucb/ps auwwx | grep weblogic | tr '' '\ n' | sécurité grep .policy | grep domain | awk -F '=' '{print $ 2}' | sed -e 's/weblogic.policy //' -e 's/security ///' -e 's/$/unfichier. cf/'| sort | uniq)

+0

Où avez-vous placé les backticks exactement dans votre réponse plus tôt. J'essaierai avec backticks.Also même si cela a fonctionné, il ne trouverait toujours pas un fichier .file.cf dans le répertoire parent. Votre réponse actuelle ne fonctionne pas pour Weblogic 10. L'exemple que j'ai donné dans ma question fonctionne pour Weblogic 8, 9 et 10.De là, je l'utilise – Sharjeel

+0

J'ai modifié votre réponse pour la rendre plus compacte et cela fonctionne pour Weblogic 8 et 9 cat $ (/ usr/ucb/ps auwwx | grep weblogic | tr '' '\ n' | grep security.policy | domaine grep | awk -F '=' '{print $ 2}' | sed -e 's /weblogic.policy /\.\.\/ somefile \.cf/'-e' s/security \ /// '-e' s/dep \ /// '| sort) Il fonctionne pour weblogic 10 car le n'est pas un répertoire dans weblogic 10 – Sharjeel

Questions connexes