我的文件有这样的行:
Tue Dec 10 14:03:45 2013 GBPCAD 158.000000
我想添加';'到特定列并将其转换为
2013年12月10日星期二14:03:45; GBPCAD; 158.000000
我该怎么做?
答案 0 :(得分: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
答案 1 :(得分:0)
awk '{$(NF-2)=$(NF-2)";"$(NF-1)";"$NF;NF=NF-2};{print}'
答案 2 :(得分: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
答案 3 :(得分:0)
击:
while read -a words; do
printf "%s;%s;%s\n" "${words[*]:0:5}" "${words[5]}" "${words[6]}"
done < filename