Katakan kita mempunyai fail teks yang dipanggil distros.txt dengan yang berikut:
archlinux
Debian
ubuntu
kaos
fedora
slackware
gentoo
Dan kami mahu mengubahnya menjadi:
archlinux debian ubuntu kaos fedora slackware gentoo
Untuk mencapai ini kita akan menggunakan a untuk gelung dan gema -n :
for i in `< distros.txt`; do echo -n ${i}" ";done; echo ""
Selesai, ini silap mata 🙂
Ini akan menunjukkan kepada kita hasil yang diinginkan di terminal, jika di sisi lain kita mahu ia disimpan dalam fail .txt yang lain, kita mengarahkan output:
for i in `< distros.txt`; do echo -n ${i}" ";done; echo "" > distros-nuevas.txt
Dan voila 🙂
Tidak apa-apa, saya harap anda menganggapnya berguna. Sah untuk menjelaskan bahawa ia juga dapat dilakukan dengan ungkapan biasa, saya tidak tahu bagaimana ... tetapi, dengan ungkapan biasa anda boleh melakukan hampir semua hahaha.
lebih mudah:
kucing distros.txt | xargs -n 100
Sekiranya di .odt saya mempunyai 2 lajur di setiap halaman, mereka membaca seperti ini:
hlm.1
col.1 col.2
hlm.2
col.3 col.4
dan lain-lain.
Bagaimana saya mendapatkan setiap lajur di bawah yang lain?
kol.1
kol.2
kol.3
kol.4
dan lain-lain.
Lebih mudah:
Sekiranya anda mahu ia dipisahkan oleh tab:
Anda menulis: tampal -s distros.txt
Anda dapat: archlinux debian ubuntu kaos fedora slackware gentoo
Sekiranya anda mahu ia dipisahkan dengan ruang:
Anda menulis: tampal -s -d »» distros.txt
Anda dapat: archlinux debian ubuntu kaos fedora slackware gentoo
Sekiranya anda mahu ia dipisahkan dengan koma:
Anda menulis: tampal -s -d, distros.txt
Anda dapat: archlinux, debian, ubuntu, kaos, fedora, slackware, gentoo
Dengan pes, kucing, awk dan rakan-rakan lain, dengan sedikit kepintaran, anda boleh membuat banyak kombinasi berguna tanpa merumitkan hidup anda.
Biarkan semuanya berterusan dengan baik, selamat atas anugerah di Portalprogramas!
Saya telah menggunakan krim sed, awk, cut, sort, uniq, ringkasnya, tetapi saya tidak pernah memberi perhatian untuk menampal, terima kasih kerana menunjukkan apa yang boleh dilakukan. Slds.
fail kucing.txt | xargs
keuntungan.
Saya selalu menggunakan excel untuk [transpose] ini ... sangat berguna
Varian lain:
kucing distros.txt | tr «\ n» »«
HaHaHa dalam setiap komen, cara yang berbeza untuk melakukan perkara yang sama!
Dan untuk melakukan sebaliknya, bagaimana rasanya? Iaitu, menukar sebaris kata yang dipisahkan oleh ruang menjadi lajur.
Mudah juga, kali ini dengan awk.
Dengan mengandaikan bahawa medan dipisahkan oleh tab atau ruang, yang paling umum (jika dengan koma atau yang lain, ia mesti diambil kira dan ditunjukkan), dan bahawa fail sekarang mengandungi: archlinux debian ubuntu kaos fedora slackware gentoo
Oleh kerana awk secara langsung memberi kita bidang yang kita mahukan, kita harus membuatnya secara berulang-ulang menunjukkan kepada kita satu persatu hingga akhir. Terdapat 7 medan kerana ini adalah nilai NF (Bilangan medan). Kami menetapkan pembilang i = 1, sehingga menunjukkan medan pertama kepada kami ($ 1) dan kami harus meningkatkannya satu unit (menggunakan i ++) tanpa melebihi medan terakhir (NF).
awk '{untuk (i = 1; i <= NF; i ++) {print $ i}}' distros.txt
Kaedah yang paling praktikal, mudah diingat dan berfungsi untuk kedua-dua deria ini adalah:
kucing distros.txt | tr '\ n' '' output Output stdout mendatar (Sudah dibincangkan di atas)
kucing distros.txt | tr '' '\ n' ← Output stdout menegak
Salam!
Pasti penyelesaian Etemenanki, kedua-dua cara, baik jika anda mahukan transformasi sederhana dari baris ke lajur dan sebaliknya.
Terima kasih semua kerana memberi maklum balas. Saya akan mempraktikkannya dalam skrip seterusnya yang saya buat.
Greetings.
Dan jika anda hanya melakukan:
gema $ (cat distros.txt)
Lebih mudah:
awk '{printf $ 0 ″ «}' distros.txt