用" .."替换目录字符串。使用sed

时间:2015-07-03 06:09:27

标签: sed

我怎样才能在sed中做到这些?

#input                 #output
file.txt              "nothing" 
dir1/                 ../
dir1/file.txt         ../
dir1/dir2/            ../../
dir1/dir2/file.txt    ../../

让我们说#input放在$ var1

sed "do something" <<< $var1
echo $var1

2 个答案:

答案 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#[^/]*$##'