Lib*_*tal 37 bash shell text-processing
我需要从Bash中的变量中删除一个目录(最左边).我找到了如何删除所有路径或使用的方法dirname
,但是它删除了右侧的所有或一个路径组件; 它不会帮助我.所以你对我需要的东西有了更好的理解,我会写一个例子:
我a/project/hello.c
,a/project/docs/README
......我想删除a/
打完一些命令I'll有project/hello.c
和project/docs/README
,...
Jon*_*ler 82
您可以使用以下任何一种:
x=a/b/c/d
y=a/
echo ${x#a/}
echo ${x#$y}
echo ${x#*/}
Run Code Online (Sandbox Code Playgroud)
所有三个echo命令产生b/c/d
; 当然,您可以以任何方式使用该值.
当您知道编写脚本时需要删除的名称时,第一个是合适的.
当你有一个包含你需要删除的前缀的变量时,第二个是合适的(次要变体:) y=a; echo ${x#$y/}
.
第三个是最通用的 - 它删除任意前缀直到第一个斜杠.*
当我bash
在MacOS X 10.6.6上测试它(版本3.2)时,我非常惊讶地发现它非常贪婪- 我会把它归结为过多的Perl和正则表达式的工作(因为,当我想到它时,*
在shell中不包括斜杠).