Fórum Root.cz

Hlavní témata => Software => Téma založeno: Jakub Velímský 12. 11. 2012, 14:39:43

Název: Bash: jak ochránit znak backquote
Přispěvatel: 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
Kód: [Vybrat]
Transferring file `soubor'

Používám následující příkaz:
Kód: [Vybrat]
files=`cat ${LOG} | grep -e "Transferring" | awk '{print $3}' | tr -d \'\``

Ten selhá s chybou
Kód: [Vybrat]
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.
Název: Re:Bash: jak ochránit znak backquote
Přispěvatel: Mrkva 12. 11. 2012, 15:26:52
Kód: [Vybrat]
grep -e "Transferring" | awk '{print $3}' | tr -d "\'\`"
Název: Re:Bash: jak ochránit znak backquote
Přispěvatel: ms 12. 11. 2012, 15:35:52
grep -e "Transfering" | sed -e 's/^.*`//' -e "s/'[^']*$//"
Název: Re:Bash: jak ochránit znak backquote
Přispěvatel: deadmail 12. 11. 2012, 17:55:45
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"
Název: Re:Bash: jak ochránit znak backquote
Přispěvatel: deadmail 12. 11. 2012, 17:58:47
Kód: [Vybrat]
grep -e "Transferring" | awk '{print $3}' | tr -d "\'\`"

nebude fungovat ak v nazve budu medzery ...
Název: Re:Bash: jak ochránit znak backquote
Přispěvatel: Jakub Velímský 12. 11. 2012, 23:56:28
Dík za všechny ohlasy, nakonec jsem použil
Kód: [Vybrat]
awk '{print substr($3,2,length($3)-2)}'
Název: Re:Bash: jak ochránit znak backquote
Přispěvatel: Kit 13. 11. 2012, 08:44:48
Dík za všechny ohlasy, nakonec jsem použil
Kód: [Vybrat]
awk '{print substr($3,2,length($3)-2)}'
Chybí ti tam to filtrování a vstup
Kód: [Vybrat]
files=`awk '/Transferring/ {print substr($3,2,length($3)-2)}' <"${LOG}"`