Sed
如何在每個換行符之前添加輸入符?
我有一個僅
\n
用於新行的文件,但我需要它\r\n
用於每個新行。我怎樣才能做到這一點?例如,我在 Vim 中使用 解決了它
:%s/\n/\r\n/g
,但我想使用腳本或命令行應用程序。有什麼建議麼?
sed
我嘗試使用or查找此grep
內容,但我立即對轉義序列解決方法感到困惑(我對這些命令有點不滿意)。如果有興趣,該應用程序與我的問題/答案有關
您可以使用unix2dos(在 Debian 上找到):
unix2dos file
請注意,此實現不會
CR
在 every之前插入 aLF
,只會在那些LF
尚未以 1 開頭(並且只有一個)的 s之前插入,CR
並且將跳過二進製文件(那些包含 0x0 -> 0x1f 範圍內的字節值而不是LF
,FF
,TAB
或CR
)。或使用
sed
:CR=$(printf '\r') sed "s/\$/$CR/" file
或使用
awk
:awk '{printf "%s\r\n", $0}' file
或者:
awk -v ORS='\r\n' 1 file
或使用
perl
:perl -pe 's|\n|\r\n|' file
這正是這樣
unix2dos
做的:$ unix2dos file.txt
這將替換
file.txt
為帶有 CRLF 行結尾的版本。如果你想用 來做
sed
,你可以在每一行的末尾插入一個輸入:sed -e 's/$/\r/' file.txt
這將 ( ) 行 ( )
s
末尾之前的零大小區域替換為。要進行就地替換(就像那樣),請使用,儘管這是一個非標準副檔名 - 如果您沒有它,請使用臨時文件。$
\r``unix2dos``sed -i.bak