我想从pwd命令生成的给定字符串中获取尾部 例如,如果pwd命令返回:
/home/example/src/github.com/abc/def
我想从github.com
得到字符串到结尾。
github.com/abc/def
答案 0 :(得分:2)
您可以在$(pwd)
中使用参数展开来实现您的目标。假设您具有{str##*}
变量中提到的路径(与github.com
的输出相同),您可以使用语法printf 'github.com%s' "${PWD##*github.com}"
语法从去除限制器的出现中获取最短的字符串到字符串的结尾。在这种情况下,我们使用多字符分隔符-v
。只是做
printf
要将其存储在新路径中,只需使用printf -v newvar 'github.com%s' "${PWD##*github.com}"
printf '%s\n' "$newvar"
github.com/abc/def
提供的printf
语法
newvar="github.com${PWD##*github.com}"
或者简单地在没有{{1}}的情况下使用
{{1}}
答案 1 :(得分:2)
您可以使用sed
:
pwd | sed 's/.*github.com/github.com/'
答案 2 :(得分:1)
又一个解决方案,grep
:
pwd | grep -Eo 'github.com.*'
基本上:取pwd
并打印出包含和在github.com之后的位
或者,即使你在github.com///的子目录中,只想在github.com之后找到两位(作者和回购名称):
pwd | grep -Eo 'github.com/([^/]+/?){2}'
在github.com之后提取了2个段
答案 3 :(得分:0)
您可以使用sed获取字符串的其余部分,然后将其与' github.com'使用xargs获取所需的字符串:
pwd | sed 's/^.*github\.com//' | xargs -I {} echo "github.com{}"
输出:
github.com/abc/def
答案 4 :(得分:0)
如果您的目标是开始使用包含句点的任何目录段打印内容,则可以使用awk执行以下操作:
$ awk 'BEGIN{ORS=RS="/"} /\./ {n=1} n' <<< "/home/example/src/github.com/abc/def"
github.com/abc/def
当然,使用sed
可以获得相同的结果sed 's/.*[^a-z]\([a-z][a-z]*\..*\)/\1/'
或者单独grep:
egrep -o '[a-z]+\..*'