Nieuws:

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

Auteur Topic: OPGELOST mawk vraagje  (gelezen 1183 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\]] \$ "

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #5 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 :)

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #6 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.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: mawk vraagje
« Reactie #7 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 #8 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 #9 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 #10 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 »