我有一个包含三列的长文件。我想添加一列(作为第一列),前 200 行为“5”,然后为接下来的 200 行添加“6”,依此类推...
awk 'BEGIN { c1 = 5 } { print c1, $0 } FNR%200 == 0 { ++c1 }' file
Run Code Online (Sandbox Code Playgroud)
这将c1
在awk
程序开始时启动一个变量 ,到 5 。然后,所有输入行都打印在此变量的当前值的前面。
对于行号 ( FNR
) 是 200 的倍数的任何行,该变量在打印该行后将增加 1。
c1
将在打印第 200、400 行等之后发生增量。
默认情况下,数字和原始数据之间的分隔符将为空格字符。通过OFS
在BEGIN
块中设置(或-v OFS='\t'
在 的命令行上使用)将其更改为选项卡(或您想要的任何内容awk
):
awk 'BEGIN { OFS = "\t"; c1 = 5 } { print c1, $0 } FNR%200 == 0 { ++c1 }' file
Run Code Online (Sandbox Code Playgroud)
将输出重定向到新文件名以保存它。