需要使用Shell脚本从文件路径中删除最后3个单词

时间:2016-01-08 11:12:30

标签: shell

我是Shell脚本的新手。我想从文件路径中删除最后3个单词,包括文件扩展名。以下是示例

输入:

/tmp/errorlog_invest_CR12345_88_1:05:45.txt

期望的输出:

/tmp/errorlog_invest

请帮助我获得所需的输出。谢谢!

1 个答案:

答案 0 :(得分:0)

You need to look at this URL

您将在此网址上找到以下解决方案 我无法添加评论所以我只是复制粘贴答案

如果要删除某些NUMBER个路径组件,则应使用cut -d'/'。例如,如果path = / home / dude / some / deepish / dir:

删除前两个组件:

$ echo $ path |切-d'/'-f4- 一些/ deepish / DIR

删除最后三个组件(假设没有尾部斜杠):

$ echo $ path |切-d'/'-f-3 /家庭/哥们

要保留最后三个组件(rev反转字符串):

$ echo $ path |转| cut -d'/' - f-3 |转 一些/ deepish / DIR

或者,如果要删除特定组件之前的所有内容,sed将起作用:

$ echo $ path | sed's /.*(some)/ \ 1 / g' 一些/ 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!/ some。* !! g' /家庭/哥们

另外,如果你的文件名中包含/字符,那么你就完全没有了。