Saya memiliki file yang hanya digunakan \n
untuk baris baru, tetapi saya harus memilikinya \r\n
untuk setiap baris baru. Bagaimana saya bisa melakukan ini?
Sebagai contoh, saya menyelesaikannya dalam Vim menggunakan :%s/\n/\r\n/g
, tetapi saya ingin menggunakan skrip atau aplikasi baris perintah. Ada saran?
Saya mencoba mencari ini dengan sed
atau grep
, tapi saya langsung bingung dengan solusi urutan melarikan diri (saya agak hijau dengan perintah ini).
Jika tertarik, aplikasi terkait dengan pertanyaan / jawaban saya di sini
CR
sebelum setiap LF, hanya sebelum LF yang belum didahului oleh satu (dan hanya satu) CR.'\r'
dengansed
melakukan trik.Inilah yang
unix2dos
dilakukannya:Itu akan menggantikan
file.txt
di tempat dengan versi dengan ujung garis CRLF.Jika Anda ingin melakukannya
sed
, Anda dapat memasukkan carriage return di akhir setiap baris:Ini menggantikan (
s
) area ukuran nol tepat sebelum akhir baris ($
) dengan\r
. Untuk melakukan penggantian di tempat (sepertiunix2dos
halnya), gunakansed -i.bak
, meskipun itu adalah ekstensi non-standar - jika Anda tidak memilikinya, gunakan file sementara.sumber
\r
pengganti tidak portabel. Paling tidak, itu tidak akan berfungsi di Mac OSX.u2d
,ux2dos
,todos
perintah sekitar juga.Jika Anda melakukan konversi pada mesin Unix (OS X, Linux), buka file dengan
vi
atauvim
:tekan tombol ESC untuk memastikan bahwa Anda tidak berada dalam mode memasukkan, lalu ketik
atau
Ini konversi di tempat dengan mengatur format file.
Untuk menulis file dan keluar dari penggunaan editor
Di baris perintah yang bisa Anda lakukan
sumber
Melakukan ini dengan POSIX itu rumit:
POSIX Sed tidak mendukung
\r
atau\15
. Bahkan jika itu terjadi, opsi di tempat-i
bukanlah POSIXPOSIX Awk mendukung
\r
dan\15
, bagaimanapun,-i inplace
pilihannya bukan POSIXd2u dan dos2unix bukan utilitas POSIX , tetapi ex adalah
POSIX ex tidak mendukung
\r
,\15
,\n
atau\12
Untuk menghapus pengembalian carriage:
Untuk menambahkan carriage return:
sumber
Fungsi shell portabel yang akan melakukan ini:
Dengan itu Anda bisa melakukan:
sumber
Dalam awk Anda dapat mencoba
Atau
The
$'\r'
adalah contoh dari gaya ANSI-C mengutip karena didukung oleh beberapa kerang sepertiksh93
,bash
,zsh
,mksh
dan FreeBSDsh
dan cenderung dimasukkan dalam edisi 8 Single Unix Specification .Ini menawarkan cara umum untuk mengekspresikan karakter aneh, coba ini, misalnya:
sumber