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

1 linux bash sed

我需要 sed 删除该行的第一个和最后一个字符,例如源

(192.168.3.0)
Run Code Online (Sandbox Code Playgroud)

结果

192.168.3.0
Run Code Online (Sandbox Code Playgroud)

尝试这样:

sed 's/^.\(.*\).$/\1/'
Run Code Online (Sandbox Code Playgroud)

但它也会删除 0 个字符

如何避免这种行为?

jan*_*nos 5

正如其他人指出的那样,您使用的 sed 模式不正确,可以修复它以正确删除第一个和最后一个字符。

或者,在您的特定示例中,如果您真正想要做的只是删除括号(仅留下 IP 地址),那么更简单的方法可以完成这项工作。

例如,这tr会从输入中过滤掉所有括号:

tr -d '()'
Run Code Online (Sandbox Code Playgroud)

这相当于以下内容sed

sed -e 's/[()]//g'
Run Code Online (Sandbox Code Playgroud)

如果您确实想知道如何删除第一个和最后一个字符,请参阅其他答案。