すべてのファイルを繰り返し、各ファイルの先頭にある改行文字を置き換えるスクリプトを作成しています。そのようなファイルの場合、
\n
\n
A line \r\n
Another line \r\n
\r
\f
\n
\n
Few more lines \r\n
\r\n
ファイルの先頭にあるすべての改行文字をCRLFに置き換える必要があります。つまり、
\r\n
\r\n
A line \r\n
Another line \r\n
\r
\f
\n
\n
Few more lines \r\n
\r\n
使ってみましたが、
sed -i 's/^[\n]/\r\n/' file.txt
しかし、これはうまくいかないようです。
編集:さまざまな行を次のように置き換えることができます。
sed '1,2s/^/\r/'
しかし、ファイルの最初の文字が改行文字かどうかを確認する方法はありますか?
答え1
GNU sedがある場合は、特別なアドレス形式を使用して、空でない最初の行の前0,/./
のファイル部分のみを置き換えることができます。表示するには:
~$ cat -e file.txt
$
$
non empty line$
non empty line$
$
$
non-empty line$
$
($
記号はテキスト行の終わりを示します。参照man cat
)。
~$ sed '0,/./ s/^$/\r/' file.txt | cat -e
^M$
^M$
non empty line$
non empty line$
$
$
non-empty line$
$
ここで^M
、文字は挿入されたCRを表します。