Portál AbcLinuxu, 19. dubna 2024 21:05


Dotaz: Bash práce s textem...

pepe_ avatar 30.8.2010 17:41 pepe_ | skóre: 48
Bash práce s textem...
Přečteno: 641×
Odpovědět | Admin
Zdravim , snazim se pochopit praci s textem v bashi.

vzal sem si treba prikaz "blkid"

zkusil sem si udelat vlastni a trapil se ... nakonec sem sesmolil neco jako :
ls -l /dev/disk/by-uuid/ | awk '{print $8 " " $10}' | tr "../../" " " | awk '{print "/dev/"$2 ": UUID=\"" $1 "\"" }'
je to ale spatne neb na prvni radek vypise /dev/: UUID="" a pak teprve pokracuje.

Kde je chyba a nebo co doporucujete na takovehle upravy ? perl python ani c ci pascal neumim , jsem odrostlej na chr$ mid$ len atd ...

mimochodem mi tam chybi i zjisteni typu filesystemu ... (to ani nevim jak zjistit)..

Treba na mem APPRO nemam ani awk , takze ani nevim jak tam psat scripty.

Obsahuje jen :
/bin:
boot.sh             convert_forward.sh  df                  gzip                login               mv                  sleep
busybox             convert_mac.sh      disconnect.sh       hostname            ls                  netstat             tar
cat                 convert_tf.sh       dmesg               ip                  mkdir               ping                true
chmod               cp                  echo                kill                more                ps                  umount
chown               date                false               lash                mount               rm                  uname
connect.sh          dd                  grep                ln                  msh                 sh                  vi

/sbin:
approconfig  auth         calc         ifconfig     init         iwcontrol    iwpriv       reboot       syslogd      tcpdump      vnstat
arp          brctl        flash        ifstat       iptables     iwlist       klogd        route        tc           udhcpc       watchdog

/usr/bin:
[           clear       cut         expr        ftpget      killall     nslookup    reset       test        tr          uptime
arping      crontab     dumpleases  free        ftpput      logger      renice      telnet      top         traceroute  wc

/usr/sbin:
crond          dnsmasq        dropbearkey    ftpd           inetd          pppoe-relay    telnetd        udhcpd
dhcrelay       dropbear       dropbearmulti  httpd          pppd           rdate          tinysnmpd

Jsou to jen veci ktere pochytavam ve faq nalezenych ruzne po netu jenze to neni komplexni. Co doporucite ? Snazim se naucit ohnout si vystupy k obrazu svemu bez nutnosti extra programovacich jazyku...

v takovem linuxu ktery ma
#free
              total         used         free       shared      buffers
  Mem:        14168         7244         6924            0          668
 Swap:            0            0            0
Total:        14168         7244         6924


#df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/mtdblock1            1.1M      1.1M         0 100% /
tmpfs                     6.9M    288.0k      6.6M   4% /tmpfs
/dev/shm                  6.9M         0      6.9M   0% /dev

se asi nic moc neda delat co ? (zatim se skousim patlat na netbooku s normalnim linuxem)

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.8.2010 18:32 NN
Rozbalit Rozbalit vše Re: Bash práce s textem...
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed, cut, printf, grep, cat..

NN
30.8.2010 18:35 Sten
Rozbalit Rozbalit vše Re: Bash práce s textem...
Odpovědět | | Sbalit | Link | Blokovat | Admin

Třeba takto:

# Tohle na každý řádek vypíše jeden soubor z toho adresáře, tak je můžu snadno projít pomocí „while read“
ls -1 /dev/disk/by-uuid/ | while read uuid; do
    # Získáme plnou cestu k zařízení (man readlink)
    dev="$(readlink -e "/dev/disk/by-uuid/$uuid")"
    # Získáme souborový systém z připojených (/proc/mounts)
    fs="$(awk '$1 == "'$dev'" { print $3 }' /proc/mounts)"
    # Možná je to swap (/proc/swaps)
    grep -q "$dev" /proc/swaps && fs="swap"
    # Ještě zkusíme fstab (man fstab)
    [ -n "$fs" ] || fs="$(awk '$1 == "'$dev'" || $1 == "UUID='$uuid'" { print $3 }' /etc/fstab)"
    # Vypíšeme
    echo "$dev: UUID=\"$uuid\", FS=\"${fs:-unknown}\""
done

Doporučuji zdejší seriál Unixové nástroje

pepe_ avatar 30.8.2010 19:16 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash práce s textem...
Super ukázka , děkuju.
pepe_ avatar 30.8.2010 19:19 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash práce s textem...
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mimochodem ucelenější příklad jako tento je 100x užitečnější než 20 stránek manu nebo vysvětleni co jak dělá bez propojených ukázek ve složitější souvislosti.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.