我怎样才能在sed中做到这些?
#input #output
file.txt "nothing"
dir1/ ../
dir1/file.txt ../
dir1/dir2/ ../../
dir1/dir2/file.txt ../../
让我们说#input放在$ var1
sed "do something" <<< $var1
echo $var1
答案 0 :(得分:1)
你可以尝试这个GNU sed
sed "s#dir[0-9]\+/*#\.\./#g; s#file\.txt##g"
答案 1 :(得分:0)
你对dir1 / dir2(没有斜线斜线)的测试是否正确? sed如何知道dir2是文件还是目录?否则你可以使用:
echo "dir1/dir2/file.txt" | sed s#[^/]*/#../#g | sed 's#[^/]*$##'