我有以下输入文件,我需要删除最后一个' /'之后出现的字符串中的所有字符。我还会在下面显示我的预期输出。
输入:
/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
但到目前为止没有运气。
答案 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