2013-02-28 46 views
0

如何添加6個單個空格分隔的列到文件中。將列添加到shell腳本中的字段

輸入文件看起來像這樣:

-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 

的第二和第三列是循環1至51

第四和第五列也環路1至51,但在上面的水平。

最後兩個那些常量和1列14

+0

請問......爲什麼? – 2013-02-28 12:06:36

+0

不應該是49多行? – Thor 2013-02-28 13:15:13

+0

因爲是Petrel加工 – user2118994 2013-02-28 14:41:18

回答

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 
+0

它也很棒!作爲awk腳本,我必須擺脫碰到第一列 – user2118994 2013-02-28 15:05:45

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

+0

的'^ M'字符太棒了!非常感謝,它工作得很好,在第一列之後有一個'^ M'字符。 – user2118994 2013-02-28 14:46:11