Saya telah mengambil buku file teks biasa dari Project Gutenberg (sekitar 0,5MB) yang ingin saya gabungkan ke n
waktu itu sendiri untuk menghasilkan file teks besar yang saya bisa patokan beberapa algoritma. Apakah ada perintah linux yang dapat saya gunakan untuk mencapai ini? cat
kedengarannya ideal, tetapi tampaknya tidak bermain terlalu baik dengan menggabungkan file ke dirinya sendiri, ditambah tidak secara langsung mengatasi n
waktu bagian dari pertanyaan.
linux
concatenation
Bryce Thomas
sumber
sumber
Jawaban:
Dua bagian untuk ini, bagi saya - pertama - untuk menggunakan cat untuk menampilkan file teks ke output standar, dan menggunakan append untuk menambahkannya ke file lain - misalnya foo.txt >> bar.txt akan menambahkan foo.txt ke bar.txt
lalu jalankan n kali dengan
mengganti n pada perintah itu dengan nomor Anda
harus bekerja, di mana n adalah nomor Anda
Jika Anda menggunakan csh, ada perintah 'ulangi'.
ulangi bagian terkait jawaban yang disalin dari sini , dan saya mengujinya pada sistem ubuntu 11.04 pada bash shell default.
sumber
{1..12}
dengan benar akan menjalankan tubuh 12 kali.for i in {1..n};do cat foo.txt; done > bar.txt
Saya bosan jadi di sini ada beberapa metode tentang cara menggabungkan file untuk dirinya sendiri, kebanyakan dengan
head
sebagai penopang. Maafkan saya jika saya menjelaskan sendiri, saya hanya suka mengatakan hal-hal: PDengan asumsi
N
adalah jumlah rangkaian diri yang ingin Anda lakukan dan bahwa file Anda dinamaifile
.Variabel:
Diberikan salinan yang
file
dipanggilfile2
,total_repeats
adalah berapa kalifile
perlu ditambahkanfile2
untuk membuatnya sama seperti jikafile
digabungkan keN
waktu itu sendiri .Kata MATH ada di sini, kurang lebih: MATH (inti)
Ini hal ilmu komputer semester pertama tapi sudah lama sejak saya melakukan bukti induksi sehingga saya tidak bisa mengatasinya ... (juga kelas rekursi ini cukup terkenal
2^Loops
sehingga ada juga ....)POSIX
Saya menggunakan beberapa hal non-posix tetapi mereka tidak penting. Untuk tujuan saya:
Oh, saya hanya menggunakan itu. Oh well, bagian itu sudah ada di sini ...
Metode
head
dengan pelacakan linecount.Tidak ada file temp, tidak ada kucing, belum terlalu banyak matematika, semua sukacita.
tee
dengan MATEMATIKABerikut
tee
adalah bacaan darifile
tetapi terus-menerus menambahkannya, sehingga akan terus membaca file di ulangi sampaihead
berhenti. Dan kita tahu kapan harus menghentikannya karena MATEMATIKA . Appendenya lewat laut, jadi saya menggunakan file temp. Anda bisa memotong garis berlebih darifile
terlalu.eval
, penguasa kegelapan!Ini hanya memperluas
cat file file file ...
dan mengevaluasinya. Anda juga dapat melakukannya tanpa$tmp
file:head
"Trik" keduacat
dengan menempatkan perantara di antara itu dan operasi penulisan. Anda bisa menipucat
dengan orang laincat
juga tetapi itu memiliki perilaku yang tidak konsisten. Coba ini:sed
:Memaksa
sed
untuk membaca seluruh file sebagai satu baris, menangkap semua file, lalu menempelkannya$total_repeats
beberapa kali.Tentu saja ini akan gagal jika Anda memiliki karakter nol di file Anda. Pilih satu yang Anda tahu tidak ada di sana.
Itu saja untuk sekarang para pemuda, saya harap jawaban sewenang-wenang ini tidak mengganggu siapa pun. Saya menguji mereka semua berkali-kali tapi saya hanya pengguna shell dua tahun jadi ingatlah itu saya kira. Sekarang tidur ...
rm $tmp
sumber
Anda tentu bisa menggunakan
cat
ini:Untuk mendapatkan
$n
salinan, Anda dapat menggunakanyes
pipa kehead -n $n
:Menyatukan itu memberi
sumber