2013-03-20 41 views
3

我有一個文本文件,我希望在某些字符(修復)後加上分隔符。 喜歡把一個分隔符(任何類似)後1-3性格比456-17 .....如何使用命令或腳本在文本文件中添加分隔符

文件看起來是這樣的(原)

22503003673916972040504700538884720121008175657358045042677480191000000919046068826 

,我想文件中像這樣

225,0,3,003673916972,0405047005388847,20121008175657,3580450426774801,91,000000919046068826, 

請建議任何將執行此項工作的命令或腳本?

在此先感謝

回答

2

我會使用Python:

#!/usr/bin/env python 

a='22503003673916972040504700538884720121008175657358045042677480191000000919046068826' 

# python strings are 0-indexed, just 
# add the indexes below 
delim=[2, 3, 4, 16] 
A="" 

for n, i in enumerate(a): 
    if n in delim: 
     A+='%s,' % i 
    else: 
     A+=i 

print A 

輸出:

$ ./delim.py 
225,0,3,003673916972,040504700538884720121008175657358045042677480191000000919046068826 

它也可以寫成相當簡潔,使用列表理解:

>>> "".join([i+',' if n in delim else i for n, i in enumerate(a)]) 
'225,0,3,003673916972,040504700538884720121008175657358045042677480191000000919046068826' 
+1

upvote,因爲你使用的是python :) – Satish 2013-03-20 20:24:37

0

使用sed:

sed "s/^.\{4\}/&,/;s/.\{6\}/&,/;s/.\{8\}/&,/;s/.\{20\}/&,/;s/.\{37\}/&,/;s/.\{52\}/&,/;s/.\{69\}/&,/;s/.\{72\}/&,/;s/.\{91\}/&,/" filename 
0

您可以在bash腳本中使用head和tail命令。在firt看到終端man headman tail中的手冊,您會了解詳情。 我想展示我的邏輯我不知道這是個好主意。 比方說你的文件名是original.txt 現在讀第3個字符這樣

var1=$(head -c 3 original.txt) 

前三個字符店變量VAR1即225店,在另一個文件中值,可以說final.txt通過放置分隔符。現在這個時候讀前四個字符像下面

var2=$(head -c 4 original.txt) 

前四個字符是變量VAR2店即2250回聲它在一個臨時文件echo var2>temp.txt

但這個時候你必須使用尾巴像下面

var3=$(tail -c 1 temp.txt) 

這裏最後一個字符存儲在變量var3即0中,使用分隔符將此var3附加到文件final.txt中。這次final.txt必須看起來像這樣255,0,

下一個字符可以像上面這樣完成。我們也可以使用循環來做到這一點。

相關問題