Saya ingin mendapatkan semua baris dalam teks menjadi satu baris. Saya seorang pemula dalam pengkodean mencoba untuk belajar dengan melakukan. Saya telah menghabiskan empat jam mencoba menyelesaikan masalah ini. Saya tahu ada solusi sederhana untuk masalah ini. Inilah yang saya coba.
sed -e 'N; s / \ n //' myfile.txt #Tidak ada apa-apa sed -e: a -e N -e 's / \ n / /' -e ta myfile.txt #output semua kacau dan saya tidak bisa membuat kepala atau ekor sintaksis cat myfile.txt | tr -d '\ n'> myfile.txt # Menghapus semua baris
Ini file teksnya:
500212 262578-4-4 23200 LABORATORIUM GRIFFITH LTD LABORATORIUM GRIFFITH DUNLIN COUNTY COUNTY SELATAN KANTOR KANTOR (INDUSTRI) Daftar Rateable 2 Kawasan Industri Pineview Jalan Firhouse Knocklyon 31 Des 2007 01 Jan 2008 "
Saya tidak tahu di mana kesalahan saya ....
cat reval_details.asp?Pno=500211.txt | tr -d '\n' > new_reval_details.asp?Pno=500211.txt
tr -d '\n' <input.txt > output.txt
- yang menghindari penggunaan kucing yang tidak berguna, dan menggunakan satu pipa yang tidak perlu.Ini dia. Ini solusi lain dan mudah sederhana.
sumber
echo `cat Input.txt` > Output.txt
bekerja juga, hanya varian laintr
solusinya.METODE SEDERHANA
Metode lain menggunakan awk,
Keluaran:
catatan:
ORS = '' -> Ini adalah pemisah bidang Anda, Anda dapat memiliki karakter di antara tanda kutip tunggal sebagai pemisah bidang. Dengan menggunakan metode awk ini kita dapat memasukkan spasi dan semua karakter.
Semoga ini bisa membantu!
sumber
man awk
Tidak perlu menempatkan label di
:a
luar instruksi utama, begitu juga-e
opsi yang diperlukan; akhirnya,/$/
ini berlebihan (setiap baris memiliki karakter EOL).Memperbaiki jawaban lain, satu mendapat
Yang lebih jelas jika dituliskan sebagai berikut,
Perintahnya bekerja sebagai berikut:
N
menambahkan baris berikutnya ke ruang pola (multiline), yang sudah berisi baris saat ini;s/\n/ /
mengganti karakter baris baru yang\n
dihasilkan olehN
dengan spasi;
ta
pergi ke baris skrip mengikuti label:a
selama substitusi pada langkah 2 berhasil , yaitu jika substitusi terjadi, eksekusi melompat ke langkah 1 tanpa "memukul" akhir skrip, yaitu tanpa membaca baris input lain.Perhatikan yang berikut ini;
sed
membaca baris file input satu per satu secara berurutan, mulai dari baris 1 ;:a
hanyalah sebuah label, bukan perintah yang harus dieksekusi;N
pada prinsipnya dieksekusi pada baris apa pun, tetapis/\n/ /
(pada prinsipnya dieksekusi pada baris apa pun) berhasil pada baris apa pun tetapi yang terakhir , jadita
membuat akhir skrip dapat dijangkau hanya ketika baris input terakhir dibaca (satu-satunya baris yangs
gagal), jadip
perintah dieksekusi.Jadi skrip pada dasarnya membaca di baris pertama input dan terus menambahkan baris berikut satu per satu, setiap kali mengganti baris baru dengan spasi; setelah baris terakhir ditambahkan (dan
\n
diubah dalam spasi),N
tidak dapat menambahkan baris apa pun,s
gagal,ta
dilewati, akhir skrip tercapai, danp
pernyataan bidak tersirat dieksekusi pada ruang pola 1 baris looong saat ini .The
-i
pilihan pengganti file inputfile
dengan ruang pola 1-line secara keseluruhan.sumber
GEDIT:
Cari dan ganti
\n
dengan spasi ''.Anda bisa mendapatkan jendela ganti dengan membuka 'Cari' -> 'Ganti'
atau melalui pintasan keybpard Ctrl+H
Lihat tangkapan layar di bawah ini:
Teks asli Anda ada pada baris 1-14.
Hasilnya ada di saluran 16.
sumber
Saya pikir cara termudah untuk melakukan ini adalah:
http://ss64.com/bash/paste.html
sumber
Coba ini
http://anandsekar.github.io/joining-all-lines-in-a-file-using-sed/
sumber
Saya pikir Anda hanya lupa bahwa Anda perlu memberitahu sed untuk mengarahkan kembali output filefile Anda ke hasil yang diinginkan, filefile.txt. Hal ini tampaknya menjadi perintah yang Anda butuhkan, tetapi hanya jika file Anda mencoba untuk menggabungkan tidak terlalu besar untuk buffer sed ini:
sed -e :a -e N -e 's/\n/ /' -e ta yourfile.txt >newfile.txt
. Kredit ke forum lain di sini , di mana mereka mendiskusikan kemampuan sed. Saya telah menguji perintah dan itu berhasil untuk saya.sumber
-i
saklar akan memodifikasi inline file asli , jadi tidak perlu untuk output ke file lain. Berhati-hatilah!a' sed -i :a -e N -i 's/\n/ /' -e ta reval_details.asp?Pno=500214.txt sed: can't find label for jump to
' sed -e: a -e N -i 's / \ n / /' -e ta reval_details .asp? Pno = 500214.txt sed: tidak dapat membaca s / \ n / /: Tidak ada file atau direktori seperti itu #Setiap gagasan.Solusi bash murni:
sumber
Jika itu saya, saya hanya akan membukanya dalam vim dan tekan Shift+ Jbeberapa kali.
sumber
Ketik dalam vim dan tekan Enter:
sumber
Pendekatan python:
AWK:
sumber