parsing - 使用 awk 在 $4 和 $5 之间添加一列

标签 parsing awk sed multiple-columns

我感兴趣的是能够在我的 csv 文件中添加一个没有值的空列,即一个空格,后跟一个选项卡。我有可以添加一列的工作代码,但我不明白如何用空格后跟制表符填充它,因为我试图将其插入两个已经存在的列 $4 之间$5 跨越 10 万行。

我的代码

cat file | NR==1 {print $0,"Ref"; next}

示例输入文件

Position        Food    Age     Occup   Loc     Avg
very stable     eggs    27      busy    out     100%

预期输出文件

Position        Food    Age     Occup   Ref     Loc     Avg
very stable     eggs    27      busy            out     100%

简单地说,我正在尝试创建一个在大约 100k 行的范围内仍然以制表符分隔的列。谢谢!我知道 sed 也可能有效。

最佳答案

awk 'BEGIN{FS=OFS="\t"} {$5=(NR>1 ? "" : "Ref") OFS $5} 1'

或者如果您出于某种原因确实希望在非标题行的“Ref”列中使用空白字符:

awk 'BEGIN{FS=OFS="\t"} {$5=(NR>1 ? " " : "Ref") OFS $5} 1'

例如:

$ cat file
Position        Food    Age     Occup   Loc     Avg
very stable     eggs    27      busy    out     100%

$ awk 'BEGIN{FS=OFS="\t"} {$5=(NR>1 ? "" : "Ref") OFS $5} 1' file
Position        Food    Age     Occup   Ref     Loc     Avg
very stable     eggs    27      busy            out     100%

关于parsing - 使用 awk 在 $4 和 $5 之间添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681331/

相关文章:

linux - 如何使用 linux 命令删除大文件 (>5G) 的某些行

.net - 解析 .NET 中的 VB6 代码

parsing - 从文本文件lua中解析科学数字

parsing - 为什么这个表达式没有被正确解析?

regex - cmd如何重命名序列号和目录名

regex - 从文件中删除第一个多行注释

使用 grep 和 awk 的 BASH FOR 循环

bash - 如何在 Mac OS 文件的第一行之前插入文本

c# - 将值从字符串解析为未知变量类型

linux - 自减包含字母的变量