如何使用sed删除1或2个点和1个斜线?

时间:2018-02-11 19:12:14

标签: linux bash sed

我正在创建一个脚本,它将读取TXT文件(其中包含许多目录路径)并删除每个目录路径的开头。但是,每个目录路径都可以以./../开头。如何使用SED删除开头?

我知道我可以使用2个命令行,一个用于删除./而另一个用于删除../,但如何在一个命令行中删除这两个模式?

2 个答案:

答案 0 :(得分:2)

我建议使用GNU sed:

echo '../foo' | sed -E 's|^\.{1,2}/||'

输出:

foo

我从s///切换到s|||以避免转义/

答案 1 :(得分:-1)

另一个。使用^表示字符串的开头,使用\?表示后者.可选:

$ echo file
./foo
../bar
./period_ending./baz
$ sed 's/^\.\.\?\///g' file
foo
bar
period_ending./baz