我有有這樣的行文件:我怎樣才能把一個字符的行猛砸
週二12月10日14時03分45秒2013 GBPCAD 158.000000
我要添加';'到特定的列,並將其轉換爲
週二12月10日14時03分45秒2013; GBPCAD; 158.000000
我怎麼能這樣做?
我有有這樣的行文件:我怎樣才能把一個字符的行猛砸
週二12月10日14時03分45秒2013 GBPCAD 158.000000
我要添加';'到特定的列,並將其轉換爲
週二12月10日14時03分45秒2013; GBPCAD; 158.000000
我怎麼能這樣做?
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
隨着awk
awk '{$(NF-2)=$(NF-2)";"$(NF-1)";"$NF;NF=NF-2};{print}'
嘗試這一行:
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
慶典:
while read -a words; do
printf "%s;%s;%s\n" "${words[*]:0:5}" "${words[5]}" "${words[6]}"
done < filename
哪裏這段文字是從哪裏來的?因爲預先格式化可能更容易。 – fedorqui
我通過從較長的行切割而生成它。 – xyzt
它總是在同一列嗎?即使你的日期是「2013年12月9日14時03分45秒」?還是它顯示爲'2013年12月14日14:03:45'? – Andy