САС экстракт последнего и остального слова - PullRequest
0 голосов
/ 04 августа 2011
log=/u00/app/oracle/product/10.2.0.4/network/admin/listener.log

я хочу извлечь, как это

listener.log
/u00/app/oracle/product/10.2.0.4/network/admin/

Кто-то помог мне с извлечением listener.log. Но я поражен другим.

#echo $log | sed 's!.*/!!'
listener.log

Ответы [ 3 ]

1 голос
/ 04 августа 2011
s/log=\(.*\/\)\([a-zA-Z0-9\.]*\)/\2 \1/

Сначала выберите детали, затем распечатайте их, как хотите.

Как это работает:

  • выберите все жадные
  • возвращайтесь назад, пока у вас не будет косой черты, чтобы завершить ее; поставить эту часть в первом матче
  • выберите все, что будет после него, поместите его во второй матч
  • Затем выведите сначала второе совпадение, а затем первое совпадение.
0 голосов
/ 04 августа 2011
#echo $log | sed 's|[^/]*$||'

(«Удалить строку символов без косой черты, за которой следует конец строки.»)

0 голосов
/ 04 августа 2011
log=/u00/app/oracle/product/10.2.0.4/network/admin/listener.log
echo "$(dirname "$log")"   # ==> /u00/app/oracle/product/10.2.0.4/network/admin
echo "$(basename "$log")"  # ==> listener.log

Также

echo "${log%/*}"   # ==> /u00/app/oracle/product/10.2.0.4/network/admin
echo "${log##*/}"  # ==> listener.log
...