2013-07-03 36 views
0

抵銷後添加文字我有這樣的文件:sed的:在一些字節匹配模式

113728482180.18408400639521053213728482180.18534013377161235313728482180.18527849814511801413728482180.12680711716571988513728482180.40802725786530114613728482180.039221670254883746713728482180.42748179436369843813728482180.45107192556631565913728482180.43916947404834661013728482180.12677684033447337

如何添加文本的位置之前(在這種情況下\n)11個字符匹配0.

我想要的東西,如落得:

113728482180.18408400639521053 
213728482180.18534013377161235 
313728482180.18527849814511801 
413728482180.12680711716571988 
513728482180.40802725786530114 
613728482180.039221670254883746 
713728482180.42748179436369843 
813728482180.45107192556631565 
913728482180.43916947404834661 
013728482180.12677684033447337 

我可能,我也想解決以下。每行的第一個數字是一個計數器(1,2,3,...,10,...,10000,...)。第9行(即1)的最後一位數字也應該包含在第10行中,以便該行從10開始,而不是從0開始。這對於1000,10000和100000也是必要的。

可能嗎?類似於1-9行,偏移將是11,對於行10-99,偏移將是12,對於行100-999,偏移將是13,依此類推。

對於上面的例子中,最後兩行會成爲:

913728482180.4391694740483466 
1013728482180.12677684033447337 

計數器是連續的。對於較大的數字,在成千上萬的順序,只需添加新行11個字符之前的比賽最終會像這樣10000S的情況下:

213728482180.43916947404831000 
313728482180.12677684033441000 

但目的是讓:

1000213728482180.4391694740483 
1000313728482180.1267768403344 

回答

4

試試這個:(GNU SED)

sed -r 's/([^.]{12}\.)/\n\1/2g' file 

例如:

kent$ sed -r 's/([^.]{12}\.)/\n\1/2g' a 
113728482180.18408400639521053 
213728482180.18534013377161235 
313728482180.18527849814511801 
413728482180.12680711716571988 
513728482180.40802725786530114 
613728482180.039221670254883746 
713728482180.42748179436369843 
813728482180.45107192556631565 
913728482180.43916947404834661 
013728482180.12677684033447337 
+0

這一工程稱爲,由於更換seq 2 10!問題的第二部分呢?可能嗎? – dfernan

+0

@dfernandes__我不明白你的問題(第二部分)。對不起... – Kent

+0

我編輯了這部分問題。我認爲現在更清楚了。 – dfernan

0

如何使用sed的bash循環?

str="..." 
for II in `seq 2 10`; do 
    str=`echo $str | sed -e 's#\('$II'13728482180\.\)# \1#'` 
done 
echo $str | tr ' ' '\n' 

您可以通過自己的數N,seq 2 N,如果提前

+0

這可能工作。但我必須稍後嘗試。 – dfernan