使用sed将目录字符串替换为“..”

3
我该如何在sed中进行这些操作?
#input                 #output
file.txt              "nothing" 
dir1/                 ../
dir1/file.txt         ../
dir1/dir2/            ../../
dir1/dir2/file.txt    ../../

假设 #input 已经放置到了 $var1 中。
sed "do something" <<< $var1
echo $var1

1
你真正想做什么?sed 可能不是正确的工具。如果这是在 shell 脚本中,也许你想用 pushdpopd - David Ehrmann
2个回答

1
你可以尝试使用GNU sed。
sed "s#dir[0-9]\+/*#\.\./#g; s#file\.txt##g"  

0

你的测试对于没有斜杠的dir1/dir2路径正确吗?sed如何知道dir2是文件还是目录?否则,你可以使用:

echo "dir1/dir2/file.txt" | sed s#[^/]*/#../#g | sed 's#[^/]*$##'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接