Fórum Root.cz
Hlavní témata => Software => Téma založeno: Jakub Velímský 12. 11. 2012, 14:39:43
-
Zdravím,
potřebuji v bashi z logu programu lftp vypreparovat seznam stažených souborů. Relevantní řádky mají formát
Transferring file `soubor'
Používám následující příkaz:
files=`cat ${LOG} | grep -e "Transferring" | awk '{print $3}' | tr -d \'\``
Ten selhá s chybou
command substitution: line 39: unexpected EOF while looking for matching ``'
command substitution: line 40: syntax error: unexpected end of file
Evidentně je problém s ochranou znaku backquote uvnitř příkazu, zkoušel jsem i varianty s 0, 1 a 2 zpětnými lomítky, nebo použít sed místo tr, vše marno.
Prosím, poraďte.
-
grep -e "Transferring" | awk '{print $3}' | tr -d "\'\`"
-
grep -e "Transfering" | sed -e 's/^.*`//' -e "s/'[^']*$//"
-
Preco vsetci miesaju grep so sedom, grep+tr s awk-om, ked na to staci vzdy druhy uvedeny?
sed -nr "s/^Transferring files \`(.*)'$/\1/p"
-
grep -e "Transferring" | awk '{print $3}' | tr -d "\'\`"
nebude fungovat ak v nazve budu medzery ...
-
Dík za všechny ohlasy, nakonec jsem použil
awk '{print substr($3,2,length($3)-2)}'
-
Dík za všechny ohlasy, nakonec jsem použil
awk '{print substr($3,2,length($3)-2)}'
Chybí ti tam to filtrování a vstup
files=`awk '/Transferring/ {print substr($3,2,length($3)-2)}' <"${LOG}"`