2010-03-21 4 views
0

У меня есть команда, в которой перечислены каталоги экземпляров Weblogic на сервере. Я хочу отобразить содержимое файла в родительском каталоге каждого перечисленного каталога.Показать содержимое файла в родительском каталоге

Дополнительная особенность будет отображать имя файла, в дополнении к отображению содержимого

/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 

Выходного выше команды выглядит следующим образом

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

Я хочу видеть содержимое файлов somefile.cf в каталогах /opt/<some_directory>/<domain_name>/, т. е. /opt/<some_directory>/<domain_name>/somefile.cf

Проще говоря, мне нужно, чтобы re rexx для rep запишите последнее имя каталога из вывода.

Я попытался это, а

/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' 

, но я уверен, что в то время как часть и последняя СЭД часть может быть удалено легко с помощью простой патч в команду, как этот

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

ответ

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 

или вы имеете в виду директорию на один уровень?

/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

Что случилось с $ DIR /../ somefile.cf? –

+0

ничего плохого. просто проскользнул мой разум, вот и все :) – ghostdog74

+0

при чтении -r DIR; do DIR = $ {DIR% * \ /} DIR = $ {DIR% \/*} cat "$ DIR" /somefile.cf; сделано выбросило ошибку, но при чтении -r DIR; do cat "$ DIR" /../ somefile.cf; сделано работает. Спасибо. Любая идея, если xargs также могут работать для этого? – Sharjeel

0

кошка /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

Две проблемы с вами отвечают. 1) Синтаксически неправильно: я получаю сообщение об ошибке cat: auwwx: Нет такого файла или каталога 2) somefile.cf находится в родительском каталоге перечисленных каталогов. sed -e 's/$/somefile.cf/' добавит somefile.cf в список каталогов, а не в родительские каталоги вывода. – Sharjeel

0

работает на 8, возможно, потребуется отлажены 10,2

кошки $ (/ USR/UCB/пс auwwx | Grep WebLogic | тр '' '\ п' | Grep безопасности .policy | grep domain | awk -F '=' '{print $ 2}' | sed -e 's/weblogic.policy //' -e 's/security ///' -e '/ $/somefile. cf/'| sort | uniq)

+0

Где вы разместили обратные записи точно в своем более раннем answer.I будет пытаться с backticks.Also, даже если он работал, он все равно не найдет somefile.cf в родительском каталоге. Ваш текущий ответ не работает для Weblogic 10. Пример, который я дал в моем вопросе, работает для Weblogic 8, 9 и 10.Hence Я использую это – Sharjeel

+0

Я подправил ваш ответ, чтобы сделать его более компактным и работает для Weblogic 8 и 9 cat $ (/ usr/ucb/ps auwwx | grep weblogic | tr '' '\ n' | grep security.policy | grep domain | awk -F '=' '{print $ 2}' | sed -e /weblogic.policy /\.\.\/ некий-файл \.cf/'-e' s/security \ /// '-e' s/dep \ /// '| сортировать) Это работа для weblogic 10, потому что не является справочником в weblogic 10 – Sharjeel