Saya memiliki data berikut, dan saya harus memasukkan semuanya ke dalam satu baris.
Aku punya ini:
22791
;
14336
;
22821
;
34653
;
21491
;
25522
;
33238
;
Saya perlu ini:
22791;14336;22821;34653;21491;25522;33238;
EDIT
Tak satu pun dari perintah ini bekerja dengan sempurna.
Kebanyakan dari mereka membiarkan datanya terlihat seperti ini:
22791
;14336
;22821
;34653
;21491
;25522
Jawaban:
Edit:
Jika tidak ada perintah yang diposting di sini yang berfungsi, Anda memiliki sesuatu selain baris baru yang memisahkan bidang Anda. Mungkin Anda memiliki akhiran baris DOS / Windows di file tersebut (meskipun saya mengharapkan solusi Perl untuk bekerja bahkan dalam kasus itu)?
Mencoba:
Jika itu tidak berhasil maka Anda harus memeriksa file Anda lebih dekat (misalnya dalam editor hex) untuk mengetahui karakter apa yang sebenarnya ada di sana yang ingin Anda hapus.
sumber
tr
tidak cocok untuk baris kosong. Bagaimana menurut anda? - - Saya pikirsed
adalah opsi terbaik seperti yang dijelaskan di sini stackoverflow.com/q/16414410/54964echo -n $(tr -d "\n" < yourfile.txt) > yourfile.txt
Harus melakukan pekerjaan itu.
sumber
perl -pie 's/\R//g' filename
sumber
paste -sd ""
tidak berfungsi pada STDIN secara default, jadi jika Anda menyalurkannya, gunakan:(some command) | paste -sd "" -
paste -sd'\0' -
Atau
Atau
Halaman ini di sini memiliki banyak metode lain untuk baris menghapus.
diedit untuk menghapus penyalahgunaan kucing :)
sumber
menggunakan
untuk mencari APA karakter yang menyinggung. lalu gunakan
untuk LF
untuk CRLF
sumber
Anda dapat mengedit file di vim:
sumber
:%s/\n/ /g
Menggunakan man 1 ed:
sumber
Fakta aneh: gunakan ASCII sebagai gantinya.
(Diedit karena saya tidak melihat jawaban sialan yang memiliki solusi yang sama, hanya perbedaannya adalah saya memiliki ASCII)
sumber
Gunakan sed dengan kelas POSIX
Ini akan menghapus semua baris yang hanya berisi spasi (spasi & tab)
sed '/^[[:space:]]*$/d'
Ambil saja apa pun yang sedang Anda kerjakan dan kirimkan ke sana
Contoh
cat filename | sed '/^[[:space:]]*$/d'
sumber
sumber
Jika datanya ada di file.txt, maka:
The '
$(<file.txt)
' membaca file dan memberikan isinya sebagai rangkaian kata yang 'bergema' kemudian bergema dengan spasi di antara mereka. Perintah 'tr' kemudian menghapus spasi apa pun:sumber
tr -d '\n' < file.txt
, itulah jawaban yang diterima (dan saya terkejut saya tidak menulisnya pada saat itu). Ini mungkin hanya ditulis untuk menunjukkan 'cara lain untuk melakukannya'.xargs
mengkonsumsi baris baru juga (tetapi menambahkan baris baru akhiran):sumber
Dengan asumsi Anda hanya ingin menyimpan angka dan titik koma, hal berikut harus dilakukan dengan asumsi tidak ada masalah enkode besar, meskipun ini juga akan menghapus "baris baru" terakhir:
Anda dapat dengan mudah memodifikasi yang di atas untuk memasukkan karakter lain, misalnya jika Anda ingin mempertahankan titik desimal, koma, dll.
sumber
Menggunakan editor teks gedit (3.18.3)
\n\s
ke kolom FindCatatan: ini tidak secara tepat membahas masalah OP asli, 7 tahun, tetapi harus membantu beberapa pengguna linux pemula (seperti saya) yang menemukan jalan mereka di sini dari SE dengan pertanyaan serupa "bagaimana cara mendapatkan teks saya semua dalam satu baris" .
sumber
Sedang mengalami kasus yang sama hari ini, sangat mudah di vim atau nvim, Anda dapat menggunakan
gJ
untuk menggabungkan baris. Untuk kasus penggunaan Anda, lakukan sajaini akan menggabungkan 99 baris Anda. Anda dapat menyesuaikan jumlahnya
99
sesuai kebutuhan sesuai dengan berapa banyak baris yang akan digabungkan. Jika hanya menggabungkan 1 baris, maka itugJ
sudah cukup.sumber
Saya akan melakukannya dengan awk, misalnya
(kerugiannya adalah bahwa a "terakumulasi" dalam memori).
EDIT
Lupa tentang printf! Jadi juga
atau mungkin lebih baik, apa yang sudah diberikan di lain dan menggunakan awk.
sumber
Saya biasanya mendapatkan usecase ini ketika saya menyalin cuplikan kode dari file dan saya ingin menempelkannya ke konsol tanpa menambahkan baris baru yang tidak perlu, saya akhirnya melakukan alias bash
(saya menyebutnya
oneline
jika Anda penasaran)xsel -b -o
membaca clipboard sayatr -d '\n'
menghapus baris barutr -s ' '
menghapus spasi berulangxsel -b -i
mendorong ini kembali ke clipboard sayasetelah itu saya akan menempelkan konten baru clipboard ke oneline di konsol atau apa pun.
sumber
Anda kehilangan jawaban yang paling jelas dan cepat terutama ketika Anda perlu melakukan ini di GUI untuk memperbaiki bungkus kata yang aneh.
Buka
gedit
Kemudian Ctrl+ H, lalu taruh di
Find
textbox\n
dan diReplace with
tempat kosonglalu isi checkbox
Regular expression
dan voila.sumber
Untuk juga menghapus baris baru di akhir file
sumber