Bagaimana saya bisa mencetak berbagai alamat ip pada baris perintah linux menggunakan perintah "seq"? Sebagai contoh: Saya perlu seq untuk mencetak kisaran ip dari 10.0.0.1 hingga 10.0.0.23. Sepertinya periode di antara oktet menyebabkan angka berperilaku seperti titik mengambang. Saya mendapatkan "kesalahan argumen floating point yang tidak valid". Saya mencoba menggunakan opsi -f. Mungkin saya tidak menggunakannya dengan benar. Tapi itu masih memberi saya kesalahan. Saya mencoba sesuatu yang mirip
seq 10.0.0.2 10.0.0.23
Apakah ada cara lain untuk mencetak alamat IP dalam rentang di Linux selain beralih ke unggul?
linux
bash
command-line
pengguna2476714
sumber
sumber
bash
, kisaran alamat itu dapat dicetakecho 10.0.0.{2..23}
. The{..}
membangun disebut ekspansi brace.Jawaban:
Gunakan format:
Sayangnya ini tidak jelas karena GNU tidak suka menulis halaman manual.
sumber
info coreutils 'seq invocation'
.%g
tidak didokumentasikan di sana; Anda harus memburuprintf
halaman info yang tepat .man 3 printf
juga merupakan ide bagus jika pembaca tidak terbiasa dengan string format printf. Yang mengatakan, saya bukan penggemar berat penggunaan texinfo baik tetapi ini hanya saran saya untuk meningkatkan jawaban Anda dengan memanfaatkan dokumentasi yang ada hanya menunjukkan kekurangan dokumentasi dalam format tertentu.Ada
prips
utilitas yang menghasilkan daftar IP dari kisaran atau CIDR. Berguna untuk bekerja dengan rentang besar:sumber
Anda dapat menggunakan perintah sed dengan seq untuk mencetak berbagai alamat IP.
ATAU menggunakan gema dan tr
sumber
The
printf
perintah melakukan iterasi implisit jika diberikan lebih argumen dari penentu konversi. Sebagai contoh:Ada dua konversi, tetapi enam argumen. Jadi tiga pengulangan logika pemformatan terjadi, berbaris di atas argumen berpasangan.
Dengan itu bisa kita lakukan:
The
printf
perintah, dan perilakunya berulang, adalah POSIX standar : "Format operan akan digunakan kembali sesering yang diperlukan untuk memenuhi operan argumen." Di sisi lain,seq
perintahnya bukan.sumber
sumber
Jika kami menghapus persyaratan untuk menggunakan
seq
perintah, dan menganggap bahwaipcalc
perintah itu tersedia, danprips
perintah Ubuntu tidak, makaprips
dapat diimplementasikan sebagai fungsi Bash shell:Perhatikan bahwa ini akan mencakup alamat jaringan dan alamat siaran dalam jangkauan; jika itu merupakan masalah, hapus alamat pertama dan terakhir dari hasilnya.
sumber