Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202

    Formattazione output in bash

    Hola, dovrei fare uno script in cui presento l'output all'utente suddiviso per colonne... tipo tabella. Come l'output di "dpkg -l" per intenderci, in cui ogni campo/parola inizia a un punto preciso della riga.
    Non ho trovato nulla sulle varie guide, forse perchè non so con quali keyword cercare...
    Cosa posso usare?
    Inoltre, perchè il carattere speciale di tabulazione orizzontale (\t) non mi funziona? e tutti gli altri sì, compresa la tabulazione verticale.

    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  2. #2

    Re: Formattazione output in bash

    Originariamente inviato da Kamui
    [...]Cosa posso usare?
    printf! Ma non la funzione C, l'omonimo comando (peraltro builtin in bash recenti)
    Inoltre, perchè il carattere speciale di tabulazione orizzontale (\t) non mi funziona?
    Con echo? Hai usato echo -e?
    Ma poi che vuol dire "non funziona"?
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    La pagina man di printf è pari solo a quella di grub...
    Cos'ha in più rispetto a echo -e?

    Neanche con printf mi funzionano i tab:
    codice:
    root(/home/sly) #printf "cane\ngatto\n"
    cane
    gatto
    root(/home/sly) #printf "cane\tgatto\n"
    canegatto
    La versione di bash che ho è "3.00.16(1)-release"
    grazie
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  4. #4
    Originariamente inviato da Kamui
    La pagina man di printf è pari solo a quella di grub...
    Cos'ha in più rispetto a echo -e?
    Ah un monte di cose: conversioni di formato, specificatori di lunghezza dei campi...

    Neanche con printf mi funzionano i tab:
    codice:
    root(/home/sly) #printf "cane\ngatto\n"
    cane
    gatto
    root(/home/sly) #printf "cane\tgatto\n"
    canegatto
    La versione di bash che ho è "3.00.16(1)-release"
    Non so che dirti:
    codice:
    $ echo $BASH_VERSION
    3.00.16(1)-release
    $ printf "cane\tgatto\n"
    cane    gatto
    $ printf "cane\ngatto\n"
    cane
    gatto
    $ which printf
    /usr/bin/printf
    $ builtin printf "cane\tgatto\n"
    cane    gatto
    $
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Il problema è di multi-aterm, con ogni altro terminale che ho funziona il \t, compreso aterm. Ho una versione vecchia (0.0.5) e forse l'hanno risolto nella versione attuale (0.2 e 0.2.1), più tardi da slackware vedo, visto che il repository che mi forniva multi-aterm, quello di mentors.debian.net, è down da tempo

    Mi sapresti consigliare qualche doc sull'uso di printf? In particolare sugli specificatori di lunghezza dei campi; ho googlato un po' ma trovo solo esempi banali :rollo:
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  6. #6
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da Kamui
    Mi sapresti consigliare qualche doc sull'uso di printf? In particolare sugli specificatori di lunghezza dei campi; ho googlato un po' ma trovo solo esempi banali :rollo:
    http://programmazione.html.it/c/c_17.htm

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Originariamente inviato da Ilmalcom
    http://programmazione.html.it/c/c_17.htm
    Ma quello è C... cosa faccio, uso setw e setiosflags?
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  8. #8
    Originariamente inviato da Kamui
    Ma quello è C...
    Gli argomenti di printf sono esattamente gli stessi...
    esempiazzi:
    codice:
    $ printf "'%10s'\n" lungherrima
    'lungherrima'
    $ printf "'%10s'\n" lunga
    '     lunga'
    $ printf "'%10s'\n" l
    '         l'
    $ printf "'%-10s'\n" lungherrima
    'lungherrima'
    $ printf "'%-10s'\n" lunga
    'lunga     '
    $ printf "'%-10s'\n" l
    'l         '
    $ printf "%3.7f\n" 1.23
    1.2300000
    $ printf "%3.7f\n" 1.23777711111112
    1.2377771
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Grazie mille

    Per chi volesse un esempio pratico, ecco uno script inutile:
    codice:
    #!/bin/sh
    
    array_dei_file_nella_home=( `ls -1 $HOME` )
    numero_di_file_nella_home=`ls -1 $HOME | wc --lines`
    echo -e "\n Ecco i file presenti nella tua home directory \n"
    for(( i=1; i<($numero_di_file_nella_home+1); ++i)); do 
     	printf "%-30s" "$i. [ ${array_dei_file_nella_home[$i-1]} ]"
    	if [[ `expr $i % 3` = 0 ]]; then
    		echo -e "\n"
    	fi
    done
    echo
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  10. #10
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da Kamui
    Ma quello è C... cosa faccio, uso setw e setiosflags?
    Ricordati che la bellezza di printf è che è praticamente uguale in ogni implementazione che io conosca

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.