0

スペースで区切られた 6 つの列をファイルに追加するにはどうすればよいですか。

次のような入力ファイル:

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

Where...はさらに 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のループですが、上から上段です。

最後の 2 つの 1 は、1 と 14 の定数列です。

4

2 に答える 2

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 に答える
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 に答える