打印文件中的变量以及一些现有列

打印文件中的变量以及一些现有列

我有一个包含三列的长文件。我想添加一列(作为第一列),前 200 行使用“5”,接下来的 200 行使用“6”,依此类推...

答案1

awk 'BEGIN { c1 = 5 } { print c1, $0 } FNR%200 == 0 { ++c1 }' file

c1这会在程序开始时将变量 初始化为 5 awk。然后打印所有输入行并添加该变量的当前值。

对于行号 ( FNR) 是 200 倍数的任何行,打印该行后此变量将增加 1。

增量 toc1将在打印第 200、400 行等之后发生。

默认情况下,数字和原始数据之间的分隔符为空格字符。通过OFS在块中设置(或在 的命令行上BEGIN使用)将其更改为选项卡(或任何您想要的):-v OFS='\t'awk

awk 'BEGIN { OFS = "\t"; c1 = 5 } { print c1, $0 } FNR%200 == 0 { ++c1 }' file

将输出重定向到新文件名以保存它。

相关内容