我在点击详细信息文件(clickInfo.txt)中有以下数据,其中有3个列由制表符分隔。 第1列表示以空格分隔的count和productId。
101 111 productXyz keyword1
57 111 productXyz keyword2
12 222 product ABC12 keyword3
我使用了以下awk命令来提取第1列,第2列和第3列
awk -F'\t' '{print $1 $2 $3 }' clicksInfo.txt
从第一栏开始,我只想要计数而不是产品ID如下:
101 productXyz keyword1
57 productXyz keyword2
12 product ABC12 keyword3
那么如何用空格作为分隔符来拆分列(制表符分隔)?
答案 0 :(得分:3)
您可以split
再次space
第1列并打印第一部分,尝试:
awk -F'\t' '{split($1, c, " "); print c[1] "\t" $2 "\t" $3}' clicksInfo.txt
答案 1 :(得分:1)
只需将第一个字段($1
)中的空格及其后的所有内容(如果有)替换为""
:
$ awk 'BEGIN{FS=OFS="\t"}{sub(/ .*/,"",$1)}1' foo
101 productXyz keyword1
57 productXyz keyword2
12 product ABC12 keyword3
答案 2 :(得分:1)
使用sed
时,假设第一列始终有两列数字,以空格分隔
$ sed -E 's/ *[0-9]+[ \t]*/\t/2' clicksInfo.txt
101 productXyz keyword1
57 productXyz keyword2
12 product ABC12 keyword3
-E
使用ERE,某些sed
版本需要-r
选项 *
可选空间[0-9]+[ \t]*
一个或多个数字后跟可选空格/标签/\t/2
仅使用标签答案 3 :(得分:0)
@Gunjan:@try:虽然你的问题不是很清楚,但考虑到你只需要获得第一列,那么为什么不打印只需1美元。此外,如果使用空格默认分隔符本身,我们可以执行不确定为什么需要将制表符作为分隔符的任务。
awk '{print $1}' Input_file