我需要获取应该从字符串末尾读取的字符串的一部分。如下所示:
a/b/c/d.txt
现在我希望输出为/a/b/c/
- 基本上是文件的路径。为此,我希望从结尾读取字符串,并在第一个/
出现的位置,它打印到字符串的第一个文本。
答案 0 :(得分:1)
如果您有单个变量,那么参数扩展如何。 假设我们使用您提供的值跟随A变量。
echo $A
a/b/c/d.txt
然后,可以使用参数扩展为您提供文件的路径名。
echo ${A%/*}/
a/b/c/
答案 1 :(得分:0)
这应该通过参数扩展完成,如@ RavinderSingh13的非常好的答案或dirname
正如@aragaer所建议的那样,但是如果你对awk解决方案很感兴趣,你可以做类似的事情:
echo "a/b/c/d.txt" | awk -F"/" '{ for (f=1;f<NF;f++){printf "%s/", $f}; printf "\n"}'
但是当你可以echo $(dirname "a/b/c/d.txt")/
答案 2 :(得分:0)
简单 sed 方法:
echo "a/b/c/d.txt" | sed 's~/[^/]*$~/~'
a/b/c/
答案 3 :(得分:0)
echo a/b/c/d.txt | awk -F/ '{$NF=""}1' OFS=/
a/b/c/