Sed

如何在每個換行符之前添加輸入符?

  • December 22, 2020

我有一個僅\n用於新行的文件,但我需要它\r\n用於每個新行。我怎樣才能做到這一點?

例如,我在 Vim 中使用 解決了它:%s/\n/\r\n/g,但我想使用腳本或命令行應用程序。有什麼建議麼?

sed我嘗試使用or查找此grep內容,但我立即對轉義序列解決方法感到困惑(我對這些命令有點不滿意)。

如果有興趣,該應用程序與我的問題/答案有關

您可以使用unix2dos(在 Debian 上找到):

unix2dos file

請注意,此實現不會CR在 every之前插入 a LF,只會在那些LF尚未以 1 開頭(並且只有一個)的 s之前插入,CR並且將跳過二進製文件(那些包含 0x0 -> 0x1f 範圍內的字節值而不是LF, FF,TABCR)。

或使用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

引用自:https://unix.stackexchange.com/questions/153091