需要使用Shell脚本从文件路径中删除最后3个字
我不熟悉Shell脚本。我想从包含文件扩展名的文件路径中删除最后3个单词。下面是一个例子 输入:需要使用Shell脚本从文件路径中删除最后3个字,shell,Shell,我不熟悉Shell脚本。我想从包含文件扩展名的文件路径中删除最后3个单词。下面是一个例子 输入: /tmp/errorlog_invest_CR12345_88_1:05:45.txt 期望输出: /tmp/errorlog_invest 请帮助我获得所需的输出。谢谢 您将在此URL上找到以下解决方案 我无法添加评论,因此只能复制粘贴Ans 如果要删除一定数量的路径组件,应使用带-d'/'的cut。例如,如果path=/home/dude/some/deepish/dir: 要删除前两个组
/tmp/errorlog_invest_CR12345_88_1:05:45.txt
期望输出:
/tmp/errorlog_invest
请帮助我获得所需的输出。谢谢
您将在此URL上找到以下解决方案
我无法添加评论,因此只能复制粘贴Ans
如果要删除一定数量的路径组件,应使用带-d'/'的cut。例如,如果path=/home/dude/some/deepish/dir:
要删除前两个组件,请执行以下操作:
$echo$path | cut-d'/'-f4-
some/deepish/dir
要删除最后三个组件(假定没有尾随斜杠):
$echo$path | cut-d'/'-f-3
/老家/老兄
要保留最后三个组件(rev反转字符串):
$echo$path | rev | cut-d'/'-f-3 | rev
some/deepish/dir
或者,如果您想删除特定组件之前的所有内容,sed将起作用:
$echo$path | sed's/*(部分)/\1/g'
some/deepish/dir
或在特定组件之后:
$echo$path | sed's/(都德)。*/\1/g'
/老家/老兄
如果不想保留指定的组件,则更容易:
$echo$path | sed's/some.*//g'
/老家/老兄/
如果要保持一致,也可以匹配尾部斜杠:
$echo$path | sed's//some.//g'
/老家/老兄
当然,如果要匹配多个斜杠,则应切换sed分隔符:
$echo$path | sed's/一些。*!!g'
/老家/老兄
另外,如果你的文件名中有/个字符,那么你就完全疯了。define“last 3 words”谢谢Rahul的回答。这真的很有帮助。