sed 替换第一次出现的“空格制表符”模式

dov*_*vah 0 sed text-processing replace

我在删除文本文件的第一个空格\s和第一个选项卡之间的字符串时遇到了一些麻烦\t(应该保留选项卡):

样本输入:

col1_frame1 unimportant    a b    c
Run Code Online (Sandbox Code Playgroud)

样本的预期输出:

col1_frame    a b    c
Run Code Online (Sandbox Code Playgroud)

我尝试过,sed 's/ .*\t/\t/'但输出错误:

我的样本输出(使用以前的 sed):

col1_frame    c
Run Code Online (Sandbox Code Playgroud)

小智 5

这是因为.*将匹配任何内容(因为它是正则表达式通配符)并且可以并且将尽可能地扩展,直到看到最后一个选项卡(并包含其间的任何其他选项卡)。您想要的是[^\t]*匹配任何不包含制表符的字符串,因此您对 sed 的组合调用应该如下所示:sed 's/ [^\t]*\t/\t/'