如果我们知道该列在文件中的放置位置,该如何使用默认值填充文件?

时间:2019-06-07 03:49:13

标签: shell unix

假设我有一个包含数据的文件:

Emp_Id|Name|Age
100156|Sam|23
1508|Amy|26
1234|Annie|30

所以我有两列需要添加: Dep_Id具有数据类型编号(在exis文件中的第二个位置)

Department的数据类型为varchar(在exis文件中的第5位)

现在,如果我知道需要添加列的位置,如何在UNIX中准备代码以使用默认值填充新列(例如,如果它是varchar,则给default,如果它是数字,则给{{1 }})包含数据的现有文件中。

我想要这样的输出:

0

1 个答案:

答案 0 :(得分:0)

您可以使用Awk完成此操作:

awk -F'|' 'NR == 1 { print $1 FS $2 FS $3 FS "Department" } NR > 1 { print $1 FS "0" FS $2 FS $3 FS "default" }' file.txt

这将产生预期的输出:

Emp_Id|Dep_Id|Name|Age|Department
100156|0|Sam|23|default
1508|0|Amy|26|default
1234|0|Annie|30|default

说明:

  • -F'|'告诉awk使用|作为字段分隔符。这使您可以参考第一个字段为$1

  • NR是指行号。对于第一行(NR == 1),我们要打印第一列,然后打印一个字段分隔符(FS,我们将其设置为|),第二列,依此类推。

  • 对于大于1的行,我们与第一行类似地打印数据。