我抓取目录的内容du -a /test1 | cut -f2
并得到以下内容:
/test1/file1
/test1/directory1
/test1/directory1/file2
我希望使用类似cut
、之类的东西sed
,或者grep
说“无论$(pwd)
是什么,都把它从输出的前面切掉”。
例如,如果 /test1/ 包含另一个名为“test1”的目录,我希望在我的输出中保留该子目录,因此如果我有:
/test1/test1/
我的理想输出是
test1/
感谢您的帮助。
编辑:我已尝试了对字符串变量而不是文件使用 sed。我可以获得与我的示例类似的输出,但它要么每行删除多个 /test1 实例,要么只对变量的第一行进行操作。它的作用与“对于每行的开头,删除$(pwd)
,但每行只删除一次”不同
这对字符串使用 sed答案仅适用于我的多行变量的第一行。给出的答案中没有涉及多行变量的主题。他们的解决方案有效,因为 PATH 变量不包含换行符。在我的例子中,它仅适用于变量的第一行,这不是所需的输出。
答案1
阅读man bash
,特别是有关“参数扩展”的部分,并执行以下操作:
a="/a/b/c"
echo "$a"
b="${a%/*}"
echo "$b"
c="${b%/*}"
echo "$c"