I want to split this line
/home/edwprod/abortive_visit/bin/abortive_proc_call.ksh
to
/home/edwprod/abortive_visit/bin
This code with awk will work perfectly as same as dirname, I guess.
It's so simple and has very low cost to work. Good luck.
Code
$ foo=/app/java/jdk1.7.0_71/bin/java
$ echo "$foo" | awk -F "/*[^/]*/*$" '
{ print ($1 == "" ? (substr($0, 1, 1) == "/" ? "/" : ".") : $1); }'
Result
/app/java/jdk1.7.0_71/bin
Test
foo=/app/java/jdk1.7.0_71/bin/java -> /app/java/jdk1.7.0_71/binfoo=/app/java/jdk1.7.0_71/bin/ -> /app/java/jdk1.7.0_71foo=/app/java/jdk1.7.0_71/bin -> /app/java/jdk1.7.0_71foo=/app/ -> /foo=/app -> /foo=fighters/ -> .More
If you're not available such awk delimiter, try it this way.
$ echo $foo | awk '{
dirname = gensub("/*[^/]*/*$", "", "", $0);
print (dirname == "" ? (substr($0, 1, 1) == "/" ? "/" : ".") : dirname);
}'