Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: OPGELOST mawk vraagje  (gelezen 886 keer)

Offline BaukeP

  • Lid
OPGELOST mawk vraagje
« Gepost op: 2011/07/07, 11:44:32 »
Hallo,

Ik gebruik de volgende alias om de huidige Ubuntu versie te krijgen:
alias ubu='cat /etc/issue | head -n 1 | cut --delimiter=" " -f 1,2,3' #|mawk " {print $1,$2}"'

de output hiervan is nu: Ubuntu 11.04 \n

Ik snap niet waar de '/n' vandaan komt. Ik wil alleen 'Ubuntu 11.04' krijgen.

Wie helpt me?

Alvast bedankt

Bauke
« Laatst bewerkt op: 2011/07/09, 20:04:25 door BaukeP »

Re: mawk vraagje
« Reactie #1 Gepost op: 2011/07/07, 11:54:40 »
Je moet alleen de eerste 2 velden hebben dus -f1,2

erik@erik-desktop:~$ echo "Ubuntu 11.04 Bla" | cut --delimiter=" " -f1,2
Ubuntu 11.04
erik@erik-desktop:~$ echo "Ubuntu 11.04 Bla" | cut --delimiter=" " -f1,2,3
Ubuntu 11.04 Bla

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #2 Gepost op: 2011/07/07, 12:01:13 »
cat gebruiken is ook overbodig hier.
Dit werkt net zo goed:
head -n1 /etc/issue |cut --delimiter=" " -f1,2
En je hebt ook een # in je commando staan, die hoort daar niet.

Offline BaukeP

  • Lid
Re: mawk vraagje
« Reactie #3 Gepost op: 2011/07/09, 14:38:27 »
Heren, bedankt!

Het verwijderen van veld 3 heeft geholpen. De nog kortere versie werken prima in de terminal, maar niet als ik het resultaat in een prompt gebruik.

export PS1="\n\[\033[1;36m\]┌── \u@\h\[\033[1;37m\] \$(nu)\[\033[1;36m\] op \$(ubu) \n└─> \[\033[0m\][\[\033[1;33m\]\w\[\033[0m\]] \$ "

en

alias ubu='cat /etc/issue | head -n 1 | cut --delimiter=" " -f 1,2' #|mawk "/\\n/{print $1, $2}"'

Bauke

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #4 Gepost op: 2011/07/09, 16:14:44 »
Is het niet handiger om slechts 1x te bepalen welke versie van Ubuntu je draait en dat in een variabele te stoppen?
Nu zal dat commando iedere keer uitgevoerd worden als de prompt weergegeven moet worden. Dat lijkt me zonde voor de prestaties.

Als je het toch per se zo wil doen, heb je er dan wel voor gezorgd dat de definitie voor de alias eerder in het script staat dan de regel die PS1 zet?

Verder staat dat hekje er ook nog in, ook niet nodig.

Het handigste is denk ik om je ~/.bashrc te bewerken.
Zoek eerst onderstaande regels op:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return

Zet hieronder dit:
release=$(head -n1 /etc/issue |cut --delimiter=" " -f1,2)

Pas verderop in het bestand de "export PS1"-regel aan:
export PS1="\n\[\033[1;36m\]┌── \u@\h\[\033[1;37m\] \$(nu)\[\033[1;36m\] op $release \n└─> \[\033[0m\][\[\033[1;33m\]\w\[\033[0m\]] \$ "

Re: mawk vraagje
« Reactie #5 Gepost op: 2011/07/09, 16:15:41 »
Is een
lsb_release -rs

niet vele malen makkelijker?

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #6 Gepost op: 2011/07/09, 16:18:04 »
Nee, want dat commando is ontzettend traag.
Niet handig als dat iedere keer uitgevoerd wordt als er een prompt weergegeven moet worden :)

Re: mawk vraagje
« Reactie #7 Gepost op: 2011/07/09, 16:23:18 »
Nee, want dat commando is ontzettend traag.
Niet handig als dat iedere keer uitgevoerd wordt als er een prompt weergegeven moet worden :)
Relatief gezien heb je gelijk, als ik de tijden meet met time dan is een cat /etc/issue in 0.002 seconden gebeurd, terwijl een lsb_release 0.037 in beslag neemt.

Eerlijk gezegd denk ik niet dat niemand het geduld zou kunnen opbrengen voor 35 milliseconden, tenzij je dat commando nu honderden keren per seconde wilt uitvoeren ;)

Nu weet ik trouwens niet of lsb_release zijn uitkomst ergens in een cache opslaat, dit zou kunnen verklaren waarom jij stelt dat lsb_release zo traag is, terwijl ik dat niet zo merk hier.
« Laatst bewerkt op: 2011/07/09, 16:29:22 door Cumulus007 »

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #8 Gepost op: 2011/07/09, 16:31:37 »
Niet gecached is het nog trager:
time lsb_release -rs
10.04

real    0m0.202s
user    0m0.070s
sys     0m0.020s
vs.
time head -n1 /etc/issue |cut --delimiter=" " -f1,2
Ubuntu 10.04.2

real    0m0.021s
user    0m0.020s
sys     0m0.000s

Dat scheelt een factor 10 :)

Als je het een paar keer achter elkaar uitvoert scheelt dat wel iets qua tijd, maar dan nog is het 2e vele malen sneller.

Re: mawk vraagje
« Reactie #9 Gepost op: 2011/07/09, 16:33:25 »
Dit zijn mijn uitkomsten:


time lsb_release -rs
10.10

real 0m0.036s
user 0m0.030s
sys 0m0.010s


time head -n1 /etc/issue |cut --delimiter=" " -f1,2
Ubuntu 10.10

real 0m0.026s
user 0m0.000s
sys 0m0.000s

Wat vreemd dat bij jou die lsb_release zoveel trager werkt, naar mijn weten heb ik er niets speciaals mee gedaan...

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #10 Gepost op: 2011/07/09, 16:39:15 »
Via SSH op een andere computer die het iets minder druk heeft dan mijn desktop:
time lsb_release -rs
11.04

real    0m0.113s
user    0m0.080s
sys     0m0.010s

time head -n1 /etc/issue |cut --delimiter=" " -f1,2
Ubuntu 11.04

real    0m0.007s
user    0m0.000s
sys     0m0.000s
De verhoudingen worden er niet beter op :P

Edit: dit begint wel een beetje offtopic te geraken. Het idee moge nu wel duidelijk zijn :)

Re: mawk vraagje
« Reactie #11 Gepost op: 2011/07/09, 16:45:29 »
Wat is eigenlijk de bedoeling van die warrige lange regel, dat er komt te staan "naam@Ubuntu 11.04:" in de terminal?

Offline BaukeP

  • Lid
Re: mawk vraagje
« Reactie #12 Gepost op: 2011/07/09, 20:03:46 »
@erik1984

De kleurcodes maken de regel wat warriger denk ik. Maar je kunt zo sneller iets terugvinden in de output.

Bauke

Offline BaukeP

  • Lid
Re: OPGELOST mawk vraagje
« Reactie #13 Gepost op: 2011/07/09, 20:07:05 »
Johan bedankt!  Edit: de anderen ook uiteraard!

Werkt inderdaad een stuk sneller. Ik leer alle dagen nog!

Bauke
« Laatst bewerkt op: 2011/07/10, 18:13:20 door BaukeP »