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

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

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

示例输入:

col1_frame1 unimportant    a b    c

样本的预期输出:

col1_frame    a b    c

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

我的示例输出(使用以前的 sed):

col1_frame    c

答案1

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

相关内容