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

1 linux awk text-processing

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

Kus*_*nda 6

awk 'BEGIN { c1 = 5 } { print c1, $0 } FNR%200 == 0 { ++c1 }' file
Run Code Online (Sandbox Code Playgroud)

这将c1awk程序开始时启动一个变量 ,到 5 。然后,所有输入行都打印在此变量的当前值的前面。

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

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

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

awk 'BEGIN { OFS = "\t"; c1 = 5 } { print c1, $0 } FNR%200 == 0 { ++c1 }' file
Run Code Online (Sandbox Code Playgroud)

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