Bash: jak ochránit znak backquote

Bash: jak ochránit znak backquote
« kdy: 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.


Mrkva

Re:Bash: jak ochránit znak backquote
« Odpověď #1 kdy: 12. 11. 2012, 15:26:52 »
Kód: [Vybrat]
grep -e "Transferring" | awk '{print $3}' | tr -d "\'\`"

ms

Re:Bash: jak ochránit znak backquote
« Odpověď #2 kdy: 12. 11. 2012, 15:35:52 »
grep -e "Transfering" | sed -e 's/^.*`//' -e "s/'[^']*$//"

deadmail

Re:Bash: jak ochránit znak backquote
« Odpověď #3 kdy: 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"

deadmail

Re:Bash: jak ochránit znak backquote
« Odpověď #4 kdy: 12. 11. 2012, 17:58:47 »
Kód: [Vybrat]
grep -e "Transferring" | awk '{print $3}' | tr -d "\'\`"

nebude fungovat ak v nazve budu medzery ...


Re:Bash: jak ochránit znak backquote
« Odpověď #5 kdy: 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)}'

Kit

Re:Bash: jak ochránit znak backquote
« Odpověď #6 kdy: 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}"`