删除每行/ sed上的第一个和最后一个字符

我需要sed删除行的第一个和最后一个字符作为源实例

(192.168.3.0) 

结果

 192.168.3.0 

尝试这种方式:

 sed 's/^.\(.*\).$/\1/' 

但是它也删除了0个字符

如何避免这种行为?

使用tr更简单一些:

 tr -d '()' 

tr通常从一组字符转换为另一个字符,但是-d标志改变了行为以删除指定的字符,这在你的例子中非常方便。

使用sed的等价物将是:

 sed -e 's/[()]//g' 

这个怎么样:

 $ echo "(192.168.3.0)" | sed 's/^.//;s/.$//' 192.168.3.0 

虽然你的命令也在工作:

 $ echo "(192.168.3.0)" | sed 's/^.\(.*\).$/\1/' 192.168.3.0 

提供的答案是正确的。 janos的回答对你的情况更为理想,但不是一般化的。 为了提供更多的方法来跟踪Sethos II的回应:

 $ echo "(192.168.3.0)" | sed -E 's/(^.)|(.$)//g' 192.168.3.0 $ echo "(192.168.3.0)" | sed 's/\(^.\)\|\(.$\)//g' 192.168.3.0 

这四个都是有效的。 TMTOWTDI。