0

OS Ubuntu 12.04

シェルバッシュ

なぜこのsedコマンドは

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

5in test.inを置き換えますか?

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形式でハングアップしたためですか?

4

2 に答える 2

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である必要があります。

于 2013-03-11T15:38:14.047 に答える
1

おそらくあなたのファイルはDOS形式です。改行の直前のキャリッジリターンにより、既存の文字(この場合は5)を上書きする行の最初の文字としてコンマが書き込まれます。

最初にUnix形式に変換します。

tr -d '\r' < file > newfile
于 2013-03-11T21:34:05.917 に答える