在 sed 中插入制表符的正确方法是什么?

新手上路,请多包涵

在 sed 中插入制表符的正确方法是什么?我正在使用 sed 将标题行插入到流中。之后我可能会替换一些字符以使用正则表达式放入制表符,但是有更好的方法吗?

例如,假设我有:

 some_command | sed '1itextTABtext'

我希望第一行看起来像这样(文本由制表符分隔):

 text    text

我尝试用“\t”、“\x09”、“”(选项卡本身)替换上面命令中的 TAB。我已经尝试过使用双引号和不使用双引号,我无法在文本之间插入制表符。

我正在尝试在 SLES 9 中执行此操作。

原文由 dabest1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您可以简单地正确使用 sed i 命令:

 some_command | sed '1i\
text    text2'

我希望很明显,“text”和“text2”之间有一个标签。在 MacOS X (10.7.2) 上,因此可能在其他基于 BSD 的平台上,我能够使用:

 some_command | sed '1i\
text\ttext2'

sed \t 成标签。

如果 sed 无法解释 \t 并且在命令行中插入制表符有问题,请使用编辑器创建一个 shell 脚本并运行该脚本。

原文由 Jonathan Leffler 发布,翻译遵循 CC BY-SA 3.0 许可协议

假设 bash (也许其他 shell 也可以):

 some_command | sed $'1itext\ttext'

Bash 将在 — 内部处理转义,例如 \t $' ' 然后将其作为 arg 传递给 sed。

原文由 Aaron McDaid 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题