Bagaimana karakter dapat dimasukkan ke string milik kolom yang dihasilkan dari perintah intput menggunakan awk dan sed

0

Berikut adalah rumus yang memiliki dasar yang sesuai untuk tujuan saya - antara lain hanya mencetak file, menggunakan untuk ukuran kekuatan 1024, 2 ^ 10 -. Ukuran file yang terlibat adalah 1382 byte (1,35 KiB ):

# ls -lh | grep -v '^d' | sed -n '2p' | awk '{print $5, $(NF)}'
1,4K anaconda-ks.cfg

Ketentuan untuk diterapkan dalam formula:

  • menyisipkan '' sebelum yang terakhir karakter milik pertama kolom output;
  • menyisipkan ' iB ' setelah yang terakhir karakter milik pertama kolom output;
  • dua digit fraksional ke nilai terdekat (mis. 1.095 = 1.09, 1.096 = 1.10);
  • kolom cetak yang terkait dengan ukuran dan file.

Output untuk mencapai setelah kondisi diterapkan:

# ls -lh | grep -v '^d' | sed <expression> | awk <expression>
1,35 KiB anaconda-ks.cfg
Ricky Tigg
sumber
1
Tolong jelaskan hasil apa yang Anda inginkan dan hasil apa yang saat ini Anda dapatkan. Akan sangat membantu untuk menjelaskan mengapa Anda melakukan ini sama sekali.
uSlackr

Jawaban:

0

Anda harus menghindari penguraian ouput darils . Alih-alih gunakan statperintah.

Dan alih-alih mencoba memalsukan format angka baru, gunakan perintah numfmtdari coreutils.

Jadi Anda bisa menggunakan ini:

for i in *; do 
  printf "%s %s\n" $(stat -c %s "$i" | numfmt --to=iec-i --suffix=B --format "%.2f") "$i"
done
oliv
sumber