最后删除字符串中的所有字符' /'

时间:2014-06-25 10:23:29

标签: sed

我有以下输入文件,我需要删除最后一个' /'之后出现的字符串中的所有字符。我还会在下面显示我的预期输出。

输入:

/start/one/two/stopone.js
/start/one/two/three/stoptwo.js
/start/one/stopxyz.js

预期输出:

/start/one/two/
/start/one/two/three/
/start/one/

我曾尝试使用sed但到目前为止没有运气。

3 个答案:

答案 0 :(得分:2)

你可以简单地使用好的grep

grep -o '.*/' file.txt

这个简单的表达式利用了grep匹配 greedy 的事实。这意味着它将消耗尽可能多的字符,包括/,直到路径中的最后/


原始答案

您可以使用dirname:

while read line ; do
    echo dirname "$line"
done < file.txt

或sed:

sed 's~\(.*/\).*~\1~' file.txt

答案 1 :(得分:1)

试试这个GNU sed命令,

$ sed -r 's~^(.*\/).*$~\1~g' file
          /start/one/two/
          /start/one/two/three/
          /start/one/

通过awk,

awk -F/ '{sub(/.*/,"",$NF); print}' OFS="/" file

答案 2 :(得分:1)

perl -lne 'print $1 if(/(.*)\//)' your_file