Inilah bagian bash
skrip yang melakukan cpuid
penemuan di Linux (Ubuntu / Fedora):
/usr/bin/cpuid > id.txt
CPUID=id.txt
echo `grep "extended model" $CPUID` | sed 's/0x//' | awk ' { print $4 } ' > cpu.txt
a=`cat cpu.txt`
echo `grep "extended family" $CPUID`| sed 's/0x//' | awk ' { print $4 } ' > cpu.txt
a+=`cat cpu.txt`
Jadi, untuk laptop saya, bagian skrip ini (ditunjukkan di sini) memberikan 60.
Sekarang bagaimana melakukan ini menggunakan HANYA variabel lokal, tidak cpu.txt
melibatkan file perantara ( )?
sumber
cat
pertama tidak seharusnya ada di sana. Itu menyebabkan CPUID untuk ditugaskan isi biner dieksekusi daripada outputnya.sed
karena saya memiliki 8 core, pc saya memancarkan:
tac membalik urutan baris dari cpuid sehingga saya dapat menggunakan ^ CPU sebagai terminator dari catatan CPU, model yang juga diperluas dan keluarga besar kemudian terjadi dalam urutan yang benar
sumber
Ini tidak mengoptimalkan perintah awal Anda, tetapi titik koma memungkinkan Anda untuk menempatkan 2 perintah bersama-sama untuk menghindari operasi penggabungan sepenuhnya:
Atau, spesifik untuk situasi Anda:
Jika Anda peduli dengan baris baru, Anda ingin memberi tanda kutip ganda sebelum inisial
$(
dan setelah penutupan)
sumber
Inilah cara untuk melakukannya
awk
(seluruh output seperti yang dilakukan oleh kode dalam jawaban Anda).Ketika Anda akhirnya memproses ulang input yang sama berulang kali, biasanya menunjukkan bahwa pendekatan lain mungkin lebih baik.
awk
sangat cocok untuk memproses input teks seperti ini.awk
program jauh lebih lama daripada yang dilakukan dengansed
, tetapi mereka jauh lebih mudah dibaca dan Anda dapat menambahkan pernyataan cetak untuk membuatnya lebih mudah debugging .Saya meninggalkan pernyataan debugging saya di (berkomentar). Anda dapat menghapus tanda komentar mereka untuk menonton bagaimana skrip bekerja.
Anda harus meletakkan
awk
program di suatu tempat dan tempat termudah dalam kasus penggunaan tunggal seperti ini adalah untuk meletakkan semuanya dalam satu string yang dikutip padaawk
baris perintah.Dengan cara ini Anda tidak perlu menyimpannya dalam file terpisah atau dalam file sementara, jadi tidak ada manajemen file yang terlibat dan skrip akan berdiri sendiri.
Program ini terlihat panjang, tetapi hampir semua komentar, pernyataan debugging, dan spasi.
sumber
Sejauh ini, saya membaca semua komentar, dan saya akan mencoba menggunakan semuanya. Seperti yang saya tulis ke NGRhodes: "sayangnya, saya tidak ahli untuk sed, awk dan perl, tetapi beberapa pemahaman awal yang saya miliki.
Banyak terima kasih kepada semua yang melakukan / mempresentasikan contoh-contoh luar biasa ini. Saya sungguh berharap lebih banyak orang akan membaca baris-baris ini dan memperdalam keterampilan menulis mereka!
Sebenarnya, saya melakukan beberapa koktail dari apa yang Anda semua menyarankan kepada saya:
Hasilnya adalah: 40651 0004-0651-0000-0000-0000-0000 yang saya harapkan! :-)
sumber