0

如何在文件中再添加 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。

4

2 回答 2

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
于 2013-02-28T12:13:07.953 回答
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.

于 2013-02-28T12:15:23.027 回答