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é