【发布时间】:2012-11-13 23:10:18
【问题描述】:
我无法获得与以下 SED 教程中给出的示例相同的输出,用于分支, http://www.grymoire.com/Unix/Sed.html#uh-59
这里引用代码:
#!/bin/sh
sed '
:again
s/([ ^I]*)//
t again
'
这个过滤器后面的空格仍然在括号中。
[更新] 这是我的输出:
$echo "( ( test ) )" | sed '
> :again
> s/([ ]*)//
> t again
> '
( ( test ) )
$
不应该是((test))吗?
如作者演示的,如何让脚本删除嵌套括号中的空格?
[/更新]
[更新2]
$echo " ( ( ) ) " | sed '
> :again
> s/\([ ]*\)//
> t again
> '
提示未返回。
[/UPDATE2]
另外我如何输入“^I”字符?我认为它是水平选项卡,但我无法像其他控制字符一样通过 puTTY 键入(例如,要获取“Enter”,我键入“Ctrl-V”,然后按“Enter”键,但这不是'不适用于标签)。我只尝试了空格(使用正则表达式[ ]* 而不是[ ^I]*),但这也失败了。
【问题讨论】:
-
您的实际要求是什么。我不清楚你的问题。
-
不要浪费你的时间。 sed 是用于在单行上进行简单替换的出色工具,但对于其他任何事情,我们只需要 awk。无论您发布的 sed 脚本打算做什么,都可以使用 awk 更清晰、更简单、更可扩展地完成。
-
@user1011046:将问题更新为更具体。
-
谢谢你,你可能是对的。但我只是想了解 sed 的语法如何用于分支。
-
我相信它涉及一个五角星、3 个辅音、4 个标点符号和蝙蝠侠符号。祝你好运!