将列添加到shell脚本中的字段

时间:2013-02-28 12:02:16

标签: shell awk

如何将另外6个单独空格分隔列添加到文件中。

输入文件如下所示:

-11.160574
...
-11.549076
-12.020907
...
-12.126601
...
-11.93235
...
-8.297653  

...代表另外50行数字。

我想要的输出是:

-11.160574 1  1  1 1 1 14
...
-11.549076 51 51 1 1 1 14
-12.020907 1  1  2 2 1 14
...
-12.126601 51 51 2 2 1 14
...
-11.93235 1  1  51 51 1 14
...
-8.297653  51 51 51 51 1 14

第2列和第3列是1到51的循环。

第4和第5列也是1到51的循环,但是在上面的上层。

最后两个常量列为1和14列。

2 个答案:

答案 0 :(得分:1)

使用循环逐行读取文件并维护计数器以跟踪字段编号,如下所示:

#!/bin/bash
field1=1
field2=1
while read line
do
    echo "$line $field1 $field1 $field2 $field2 1 14"
    (( field1++ ))
    if (( $field1 == 52 )); then
        field1=1
        (( field2++ ))
    fi
done < file

答案 1 :(得分:1)

你走了,一个awk脚本:

{
    mod = 51
    a = (NR - 1) % mod + 1
    b = int((NR - 1) / mod) + 1
    c = 1
    d = 14
    print $0,a,a,b,b,c,d
}

使用awk -f the-script.awk in-file.txt之类的内容运行它。或者将其设为可执行文件并在顶部添加#!/usr/bin/awk -f,您可以直接运行它而无需键入awk -f