2013-03-11 26 views
0

操作系統Ubuntu的12.04

殼牌慶典

爲什麼這個sed命令

sed -e 's/$/,/g' test.in

替換test.in的5

這裏有test.in

52147398,9480,12/31/2011 23:22,101049000,LNAM,FNAM,80512725,43,0,75,1/1/2012 6:45,101049000

這裏的內容的運行結果的sed

,2147398,9480,12/31/2011 23:22,101049000,LNAM,FNAM,80512725,43,0,75,1/1/2012 6:45,101049000

我想提出一個逗號後1010489000

後替換日期時間格式以便它在yyyy-mm-dd hh:mm:ss format中,現在預期

s/$/,/g

作品。這是因爲sed掛在mm/dd/yyyy hh:mm格式上?

+0

確實內容來自'貓test.in'? – Kent 2013-03-11 15:00:16

+0

是的,這些內容來自cat test.in,隨着這些變化。我用LNAM和FNAM替換了某人的真實姓名。否則,內容是一樣的。 – octopusgrabbus 2013-03-11 15:05:20

回答

1

可能您的文件是DOS格式。在換行符之前的回車將導致逗號被寫爲覆蓋現有字符的線上的第一個字符(在這種情況下爲5)。

轉換爲Unix格式第一:

tr -d '\r' <file> newfile 
1
$ cat test.txt | sed 's/$/,/g' 
52147398,9480,12/31/2011 23:22,101049000,LNAM,FNAM,80512725,43,0,75,1/1/2012 6:45,101049000, 

也許文件已損壞?嘗試複製/粘貼到一個新的文件...

也可以嘗試,

$ hexdump test.txt 
hexdump test.txt 
0000000 35 32 31 34 37 33 39 38 2c 39 34 38 30 2c 31 32 
0000010 2f 33 31 2f 32 30 31 31 20 32 33 3a 32 32 2c 31 
0000020 30 31 30 34 39 30 30 30 2c 4c 4e 41 4d 2c 46 4e 
0000030 41 4d 2c 38 30 35 31 32 37 32 35 2c 34 33 2c 30 
0000040 2c 37 35 2c 31 2f 31 2f 32 30 31 32 20 36 3a 34 
0000050 35 2c 31 30 31 30 34 39 30 30 30 0a    
000005c 

第一個字符應爲0x35。

+0

文件腐敗是一個好主意。 – octopusgrabbus 2013-03-11 15:41:35

相關問題