2010-03-24 54 views
0

我試圖在AIX上使用以下命令從文件中刪除回車(\r),但它也刪除了我的最後一行。有什麼建議麼?Sed腳本命令截斷最後一行

sed -e 's/\r\n/\n/g' ./excprule > ./excprule.tst 

命令序列:

 
dev1:> sed -e 's/\r\n/\n/g' ./test_file > ./test_file.tst 
dev1:> diff test_file.tst test_file 
diff: 0653-827 Missing newline at the end of file test_file. 
26a27 
> Trailer 25 

編輯:用perl的做同樣的事情找到一個解決辦法,但想知道爲什麼這是行不通的。

+3

顯然,差異抱怨你的原始文件。 基本上,它說它以\ r結尾,而它應該以\ n結尾。 顯然,你的sed命令沒有錯。 – tonio 2010-03-24 14:06:42

回答

1

您也可以使用DOS2UNIX的,如果你有它在AIX,然而,與SED,

sed '$!{:a;N;s/\r\n/\n/;ta}' file 

SED剝去換行符時,它處理當前行(請參見手冊頁),這樣你就不會真的找到\r\n

+0

我相信刪除'\ r'會是dos2unix? – Cascabel 2010-03-24 14:29:39

+0

是的,你說得對,倒過來了。 – ghostdog74 2010-03-24 14:46:03

+1

爲什麼不簡單地使用 'tr'\ r'''< file.in > file.out'? – tonio 2010-03-24 14:49:27