Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: webhope 28. 03. 2010, 12:44:03
-
Mám /mnt/pokus
a chci pomocí regul. výrazu vybrat jen rodičovský adresář: /mnt
Zkoušel jsem něco vymyslet, ale nedaří se.
Finální podoba příkazu má být taková:
read cesta
if [ ! -d "$cesta" ]; then echo "Adresar neexistuje";
ls ${cesta/pattern/parent_dir};
fi;
-
Nieco taketo?
read cesta
if [ ! -d "$cesta" ]; then echo "Adresar neexistuje";
echo "$cesta" | sed -e 's:/[^/]*$::' | xargs ls
fi;
-
I to může být. I když myslel jsem, že přes parameter substitution by bylo snazší řešení.
-
A co tak:
cesta="/adr1/adr2/pokus"
echo "${cesta%/*}"
-
Deadmail
To mě nenapadlo
awk
Řeším obdobný problém. Mám řetězec TYPE="ntfs" a chci dostat to co je uvnitř závorek. Nevede se mi odstranit poslední uvozovku.
fs=$(echo $line | awk '{print substr($5,7,length($5)-1)}');
echo $fs; read
Zkoušel jsem to taky pomocí parameter subsitution, ale umím odstranit jen to co je do znaku x v pořadí nebo to co je od znaku y v pořadí. Předpokládám, že délka řetězce mezi uvozovkama se může měnit, takže varianta "odstraň od y až do konce" nepřipadá v úvahu.
-
Řeším obdobný problém. Mám řetězec TYPE="ntfs" a chci dostat to co je uvnitř závorek.
To sa riesilo nedavno tu na fore (http://forum.root.cz/index.php?topic=280.msg1122#msg1122) cez grep. Da sa to aj priamo v bashi:
line='TYPE="ntfs"'
line="${line%\"*}"
line="${line#*\"}"
echo $line
-
No a já jsem přišel na to jak to má být v tom awk:
line='/dev/sda9: UUID="58E75A17692994A5" LABEL="ARCHIV" TYPE="ntfs"'
echo $line | awk '{print substr($4,7,length($4)-7)}'
Problém je v tom, že jsem myslel, že ten třetí argument substr() znamená kolik se má odečíst od konce. Místo toho to znamená délku toho řetězce, který má zůstat. Vlastně se to dá vypočítat: celková délka řetězce mínus délka (neboli pozice) toho co má být odstraněno ze začátku.
-
No a já jsem přišel na to jak to má být v tom awk:
no to funguje len pre stvorpismenkove premenne pred rovnasa ...
-
A ted jsem zjistil, že už jsem to jednou řešil a sice takto:
uuid=${uuid//UUID=/}; uuid=${uuid//\"/}; # odstranění UUID= a uvozovek :-)
čili s TYPE je to podobné