文件看起来像这样,但有数百万行(TAB
分隔):
1_number_column_ranking_+ 100 200 Target "Hello"
我想用 _
拆分第一列,这样它就变成了:
1 number column ranking + 100 200 Target "Hello"
这是我一直在尝试的代码:
awk -F"\t" '{n=split($1,a,"_");for (i=1;i<=n;i++) print $1"\t"a[i]}'
但这并不是我所需要的。
感谢您提供任何帮助(关于该主题的其他主题对我没有帮助)。
最佳答案
无需拆分,只需替换即可:
awk 'BEGIN{FS=OFS="\t"}{gsub("_","\t",$1)}1'
例如:
$ cat file
1_number_column_ranking_+ 100 200 Target "Hello"
$ awk 'BEGIN{FS=OFS="\t"}{gsub("_","\t",$1)}1' file
1 number column ranking + 100 200 Target "Hello"
gsub
将替换所有出现的地方,当没有给出第 3 个参数时,它将替换为 $0。
最后一个 1
是 {print}
的快捷方式。 (始终为 true
,隐含为 {print}
。)
关于linux - 使用 AWK 将文件的第一列拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54202017/