2013-12-10 47 views
0

我有有這樣的行文件:我怎樣才能把一個字符的行猛砸

週二12月10日14時03分45秒2013 GBPCAD 158.000000

我要添加';'到特定的列,並將其轉換爲

週二12月10日14時03分45秒2013; GBPCAD; 158.000000

我怎麼能這樣做?

+0

哪裏這段文字是從哪裏來的?因爲預先格式化可能更容易。 – fedorqui

+0

我通過從較長的行切割而生成它。 – xyzt

+0

它總是在同一列嗎?即使你的日期是「2013年12月9日14時03分45秒」?還是它顯示爲'2013年12月14日14:03:45'? – Andy

回答

2

Sed可能有幫助。

sed -e 's/\ \([^ ]*\)\ \([^ ]*\)$/;\1;\2/g' file 

測試

$ sed -e 's/\ \([^ ]*\)\ \([^ ]*\)$/;\1;\2/g' <<< 'Tue Dec 10 14:03:45 2013 GBPCAD 158.000000' 
Tue Dec 10 14:03:45 2013;GBPCAD;158.000000 
0

隨着

awk '{$(NF-2)=$(NF-2)";"$(NF-1)";"$NF;NF=NF-2};{print}' 
0

嘗試這一行:

sed的

sed -r 's/ (\w{5,}) /;\1;/' file 

kent$ echo "Tue Dec 10 14:03:45 2013 GBPCAD 158.000000"|sed -r 's/ (\w{5,}) /;\1;/'         
Tue Dec 10 14:03:45 2013;GBPCAD;158.000000 

awk的

awk '{s=";"$(NF-1)";"$NF;NF-=2}$0=$0 s' file 

kent$ echo "Tue Dec 10 14:03:45 2013 GBPCAD 158.000000"|awk '{s=";"$(NF-1)";"$NF;NF-=2}$0=$0 s' 
Tue Dec 10 14:03:45 2013;GBPCAD;158.000000 
0

慶典:

while read -a words; do 
    printf "%s;%s;%s\n" "${words[*]:0:5}" "${words[5]}" "${words[6]}" 
done < filename