我在删除文本文件的第一个空格\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/'