最后删除文字/

时间:2011-09-07 06:30:33

标签: text

我有以下链接列表:

http://site1.com/lalala.html
http://site2.com/lalala/

我需要删除最后一行中的所有文本/如何使用awk或sed执行此操作?或者可能是一些perl或python脚本?谢谢你的帮助!

5 个答案:

答案 0 :(得分:2)

这可行:

$ echo http://site1.com/lalala/ | sed -e 's;\(.*/\).*;\1;'
http://site1.com/lalala/
$ echo http://site1.com/lalala/foo.html | sed -e 's;\(.*/\).*;\1;'
http://site1.com/lalala/

答案 1 :(得分:0)

在PHP中,您在字符串上使用dirname()。 PHP是可能的脚本语言之一吗?

修改

Perl和Python都有dirname(),对实现不太确定。遗憾

答案 2 :(得分:0)

除了使用的语言之外,我会将所有行(使用\ n作为分隔符)拆分为数组,然后我会搜索每个元素的lastIndexOf“/”,然后我将删除我不喜欢的部分需要使用常规的String方法。当然,您也可以使用RegExp做一些有趣的事情。

答案 3 :(得分:0)

您可以使用

sed -e 's/\(.*\)\/[^\/]*/\1/g'

示例:

bash-$ echo "http://site1.com/lalala.html" |sed -e 's/\(.*\)\/[^\/]*/\1/g'
http://site1.com
bash-$ echo "http://site2.com/lalala/" |sed -e 's/\(.*\)\/[^\/]*/\1/g'
http://site2.com/lalala

答案 4 :(得分:0)

使用awk你可以使用:

awk 'BEGIN { FS="/"; OFS="/"; } { $NF = ""; print; }'

示例:

$ echo http://site1.com/lala/la.txt | awk 'BEGIN { FS="/"; OFS="/"; } { $NF = ""; print; }'
http://site1.com/lala/

$ echo http://site1.com/lala/ | awk 'BEGIN { FS="/"; OFS="/"; } { $NF = ""; print; }'
http://site1.com/lala/