Pertanyaan Bagaimana cara mengetahui garis-akhir dalam file teks?


Saya mencoba menggunakan sesuatu di bash untuk menunjukkan kepada saya akhiran garis dalam file yang dicetak daripada ditafsirkan. File tersebut adalah dump dari SSIS / SQL Server yang dibaca oleh mesin Linux untuk diproses.

  • Apakah ada switch di dalamnya vi, less, more, dll?

  • Selain melihat garis-akhiran, saya perlu tahu apa jenis garis akhir itu (CRLF atau LF). Bagaimana saya mengetahui itu?


193
2017-08-25 20:36


asal


Jawaban:


Anda dapat menggunakan file utilitas untuk memberi Anda indikasi jenis garis akhiran.

Unix:

$ file testfile1.txt
testfile.txt: ASCII text

"DOS":

$ file testfile2.txt
testfile2.txt: ASCII text, with CRLF line terminators

Untuk mengkonversi dari "DOS" ke Unix:

$ dos2unix testfile2.txt

Untuk mengkonversi dari Unix ke "DOS":

$ unix2dos testfile1.txt

Mengonversi file yang sudah dikonversi tidak memiliki pengaruh sehingga aman untuk dijalankan secara membuta (yaitu tanpa menguji format terlebih dahulu) meskipun penafian biasa berlaku, seperti biasa.


280
2017-08-25 22:00



Di vi...

:set list untuk melihat garis-akhiran.

:set nolist untuk kembali normal.

Meskipun saya tidak berpikir Anda bisa melihat \n atau \r\n di vi, Anda dapat melihat jenis file apa itu (UNIX, DOS, dll.) untuk menyimpulkan ujung garis mana yang ...

:set ff 

Atau, dari bash Kamu dapat memakai od -t c <filename> atau hanya od -c <filename> untuk menampilkan pengembalian.


108
2017-08-25 20:42



Di shell bash, coba cat -v <filename>. Ini harus menampilkan carriage-return untuk file windows.

(Ini bekerja untuk saya di rxvt via Cygwin di Windows XP).

Catatan Editor: cat -v memvisualisasikan \r (CR) karakter. sebagai ^M. Jadi, akhiran garis \r\n urutan akan ditampilkan sebagai ^M di akhir setiap jalur output. cat -e juga akan memvisualisasikan \n, yaitu sebagai $. (cat -et juga akan memvisualisasikan karakter tab. sebagai ^I.)


77
2017-08-25 21:01



Ubuntu 14.04:

sederhana cat -e <filename> bekerja dengan baik.

Ini menampilkan akhiran baris Unix (\n atau LF) sebagai $ dan akhiran Windows line (\r\n atau CRLF) sebagai ^M$.


68
2017-12-20 00:49



Untuk menampilkan CR sebagai ^M kurang digunakan less -u atau ketik -kamu sekali kurang terbuka.

man less mengatakan:

-u or --underline-special

      Causes backspaces and carriage returns to be treated  as  print-
      able  characters;  that  is,  they are sent to the terminal when
      they appear in the input.

11
2017-07-27 15:03



Kamu dapat memakai xxd untuk menunjukkan hex dump file, dan mencari karakter "0d0a" atau "0a".

Kamu dapat memakai cat -v <filename> seperti yang disarankan oleh @warriorpostman.


10
2017-09-10 16:50



Anda dapat menggunakan perintah todos filename untuk mengkonversi ke akhiran DOS, dan fromdos filename untuk mengkonversi ke akhiran baris UNIX. Untuk menginstal paket di Ubuntu, ketik sudo apt-get install tofrodos.


4
2017-10-28 22:13