使用 space 拆分制表符分隔的列

Split tab delimited column with space

我在点击详细信息文件 (clickInfo.txt) 中有以下数据,其中有 3 列由制表符分隔。 第一列代表计数和产品编号,由 space.

分隔
101 111    productXyz      keyword1
 57 111    productXyz      keyword2
 12 222    product ABC12      keyword3

我使用以下 awk 命令提取了第 1、2、3 列列

 awk -F'\t' '{print    }' clicksInfo.txt

从第一列开始,我只想要计数而不是产品 ID,如下所示:

101     productXyz      keyword1
 57     productXyz      keyword2
 12     product ABC12      keyword3

那么如何以space作为分隔符拆分列(制表符分隔)?

@Gunjan:@try:虽然你的问题不是很清楚,但考虑到你只需要获取第一列,那么为什么不只打印 $1。此外,如果使用 space 默认分隔符本身,我们可以完成任务,但不确定为什么有必要将制表符作为分隔符。

awk '{print }' Input_file

您可以使用 space 再次 split 第 1 列并打印它的第一部分,尝试:

awk -F'\t' '{split(, c, " "); print c[1] "\t"  "\t" }' clicksInfo.txt

只需将第一个字段 (</code>) 中的 space 及其后的所有内容(如果有的话)替换为 <code>"":

$ awk 'BEGIN{FS=OFS="\t"}{sub(/ .*/,"",)}1' foo
101     productXyz      keyword1
57      productXyz      keyword2
12      product ABC12   keyword3

对于 sed,假设第一列总是有两列数字,由 space

分隔
$ sed -E 's/ *[0-9]+[ \t]*/\t/2' clicksInfo.txt 
101     productXyz      keyword1
 57     productXyz      keyword2
 12     product ABC12      keyword3
  • -E 使用 ERE,一些 sed 版本需要 -r 选项来代替
  • *可选space
  • [0-9]+[ \t]* 一位或多位数字后跟可选的 space/tab
  • /\t/2 仅用 tab
  • 替换第二次出现的情况