Home > OS >  Split path based on token to get path
Split path based on token to get path

Time:02-01

I am working on project where main directory for code is prjcode. some user will checkout code in home directory so their path will become /home/shekhar/prjcode/src

some may checkout code in any directory like /home/shekhar/31jan/prjcode/src/

Project need some scripts to run on prjcode path how to find/extract path to prjcode/

Input path- /home/shekhar/prjcode/src/ output path- /home/shekhar/

Input path- /home/shekhar/31jan/prjcode/src/ output path- /home/shekhar/31jan/

Input path- /home/shekhar/src_code/31jan/prjcode/src/ output path- /home/shekhar/src_code/31jan/

please suggest. Basically need path before prjcode directory .

CodePudding user response:

Basically you can use echo ${pth%"prjcode/src/"} where pth is your path variable.

# pth="/home/shekhar/prjcode/src/"
# echo ${pth%"prjcode/src/"}
/home/shekhar/
#
# pth="/home/shekhar/31jan/prjcode/src/"
# echo ${pth%"prjcode/src/"}
/home/shekhar/31jan/
#
# pth="/home/shekhar/src_code/31jan/prjcode/src/"
# echo ${pth%"prjcode/src/"}
/home/shekhar/src_code/31jan/

CodePudding user response:

For arbitrary delimiters, I often go with an awk solution:

$ paths=(/home/shekhar/prjcode/src/ /home/shekhar/31jan/prjcode/src/ /home/shekhar/src_code/31jan/prjcode/src/)

$ for path in "${paths[@]}"; do awk -F'prjcode/' '{print $1}' <<<$path; done
/home/shekhar/
/home/shekhar/31jan/
/home/shekhar/src_code/31jan/

And to unpack that into something very simple to read

echo "/home/shekhar/src_code/31jan/" | awk -F'prjcode/' '{print $1}'
  •  Tags:  
  • Related