opensuse
[Arriba] [Todas las Listas]

Re: [opensuse] bash -- Dónde dentro el heck es "^M...80 espacios...^M"

To: opensuse@xxxxxxxxxxxx
Subject: Re: [opensuse] bash -- Dónde dentro el heck es "^M...80 espacios...^M" Consiguiendo escrito por tee?? (Puede lo cojo?)
From: David Haller <dnh@xxxxxxxxxxxx>
Date: Fri, 30 Sep 2011 14:58:25 +0200
Delivered-to: opensuse@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 30 Sep 2011 08:59:28 -0400
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <4E84FAE4.2000203@suddenlinkmail.com>
List-archive: <http://lists.opensuse.org/opensuse/>
List-help: <mailto:opensuse+help@opensuse.org>
List-owner: <mailto:opensuse+owner@opensuse.org>
List-post: <mailto:opensuse@opensuse.org>
List-subscribe: <mailto:opensuse+subscribe@opensuse.org>
List-unsubscribe: <mailto:opensuse+unsubscribe@opensuse.org>
Mail-followup-to: opensuse@xxxxxxxxxxxx
Mailing-list: contact opensuse+help@xxxxxxxxxxxx; run by mlmmj
Organization: What?
References: <4E83A932.9040005@suddenlinkmail.com> <4E83E337.5070707@antonaylward.com> <20110929081353.GA6167@grusum.endjinn.de> <4E84AD9C.6090101@suddenlinkmail.com> <4E84BB80.9070709@suddenlinkmail.com> <4E84FAE4.2000203@suddenlinkmail.com>
User-agent: Mutt/1.5.21 (2010-09-15)
Hola,

En *Thu, 29 *Sep 2011, David *C. *Rankin Escribió:
>En 09/29/2011 01:40 PM, David *C. *Rankin Escribió:
>>   *dnh, todos ven cualesquier agujeros en él o una manera de hacerlo mejor? Justo iba para
>>echarlo una una función y escribirlo fuera...
>
>Justo FYI, aquí es lo que acabé arriba con. Añadí un intermedio *tmp
>archivo para desnudar el \*r:
>
>#!/Cubo/*bash
>
>## *dir prueba
>[[ -*d /*dat_*e/*dv/nuevo ]] #verbcj "No /*dat_*e/*dv/nuevo, saliendo..."; Salida 2; }

prefiero utilizar la prueba

sencilla -*d /*dat_*e/*dv/nuevo #verbcj "No /*dat_*e/*dv/nuevo, saliendo..."; Salida 2; }

>*cd /*dat_*e/*dv/el eco nuevo "no puede cambiar a /*dat_*e/*dv/nuevo, saliendo..."; Salida 2; }

sencillamente podrías cambiar al *dir, conseguirás un cabiendo mensaje:

$ *cd /*dat_*e/*dv/nuevo
*bash: *cd: /*dat_*e/*dv/nuevo: No tal archivo o directorio

*i.*e. Justo uso

    *cd /*dat_*e/*dv/salida nueva 2

en vez de por encima de dos pruebas.

>## La Cinta leída cuenta y montar *vars & *tmp archivos
>*tapect#num{^1:-$(</*dat_*e/*dv/*tapect.*txt)}
>*tmpfn=/*tmp/*dvtmp.*log
>*tmpapp=/*tmp/*dvapp.*log
>:>$*tmpfn
>:>$*tmpapp
>Primer_*dt=""
>último_*dt=""
>
>## fija formato de fecha de *yyyy.*mm.*dd A *mm/*dd/*yyyy
>*fixdfmt()
>  #default{^[[ -*n $1 ]] #nom_de_nom "de eco: Nada pasado para funcionar '*fixdfmt'"; regreso 1; }
>  año#num{^1//.*}
>  Día#num{^1##*.}
>  *mo#Num{^1%.*}
>  *mo#unknown{^*mo##*.}
>  Eco#unknown{^*mo}/${#nom_nom_nom}/${de año}"
>     0
>}

Una alternativa divertida vine arriba con:

*fixdfmt()
    #nom -*z "$1" && {
        ERROR "de eco: Nada pasado para funcionar '*fixdfmt'" >&2;
        regreso 1;
    }
    _*fixdfmt() #nom "$3/$2/$1"; }
    *oIFS="$IFS"; IFS="."
    _*fixdfmt $1
    IFS="$*oIFS"
    # *unset _*fixedfmt
}

>## *parse fechas de $*tmpfn para conseguir inicio y fechas de fin para índice de cinta
>*getdates()
>  #unknown{^*OLDIFS=$IFS
>  de IFS=$'\*n'
>  *clipct=1
>  puesto que *i en $(*grep \"*d $*tmpfn); hacer
>    *dt#unknown{^*i//\"*dcrv-}
>    *dt#unknown{^*dt//_*}
>    [[ $*clipct -*eq 1 ]] && primer_*dt=$(*fixdfmt $*dt)
>    ((*clipct++))
>  hecho
>  último_*dt=$(*fixdfmt $*dt)
>  IFS=$*OLDIFS
>}
>
>## descargar vídeo con producción a *tmpfn & *rewind cinta cuándo eco
>hecho -*e "\*nCapture Empezó: $(fecha '+%*b %*e %*T')\*n" | *tee -un $*tmpfn

fecha '+\*nCapture Empezó: %*b %*e %*T\*n' | *tee -un $*tmpfn

>*dvgrab -*rewind -*timestamp -*autosplit=3600 -el formato crudo *dcrv- 2>&1 | *tee -un $*tmpfn
>*dvcont *rewind
>
>## fijar el \*r gato
>de asunto $*tmpfn | *sed /^[[:espacial:]]*\*r//' > /*tmp/fija.*log
>*cp /*tmp/Fija.*log $*tmpfn

Podrías combinar que con el *grep.  Consigues aquellos \*r en las mismas
líneas como el '"*dcrv-'?

*Alternatively:

*sed -*i /^[[:Espacial:]]*\*r//' $*tmpfn

*HTH,
-*dnh

-- 
Si no ves por qué, complacer quedarse el joder fuera de mi código.
                                      -- Paul "*Rusty" *Russel,
  en /*usr/*src/*linux/Documentación/*DocBook/*kernel-cerrando.*tmpl
-- 
A *unsubscribe, *e-correo: *opensuse+unsubscribe@xxxxxxxxxxxx
Puesto que órdenes adicionales, *e-correo: *opensuse+help@xxxxxxxxxxxx


Hello,

On Thu, 29 Sep 2011, David C. Rankin wrote:
>On 09/29/2011 01:40 PM, David C. Rankin wrote:
>>   dnh, all see any holes in it or a way to make it better? I was just going to
>>throw it an a function and write it out...
>
>Just FYI, here is what I ended up with. I added an intermediate tmp
>file to strip the \r:
>
>#!/bin/bash
>
>## dir test
>[[ -d /dat_e/dv/new ]] || { echo "No /dat_e/dv/new, exiting..."; exit 2; }

I prefer to use the simple

test -d /dat_e/dv/new || { echo "No /dat_e/dv/new, exiting..."; exit 2; }

>cd /dat_e/dv/new || { echo "cannot change into /dat_e/dv/new, exiting..."; exit 2; }

You could simply change to the dir, you'll get a fitting message:

$ cd /dat_e/dv/new
bash: cd: /dat_e/dv/new: No such file or directory

i.e. just use

    cd /dat_e/dv/new || exit 2

instead of above two tests.

>## read tape count and set up vars & tmp files
>tapect=${1:-$(</dat_e/dv/tapect.txt)}
>tmpfn=/tmp/dvtmp.log
>tmpapp=/tmp/dvapp.log
>:>$tmpfn
>:>$tmpapp
>first_dt=""
>last_dt=""
>
>## fix date format from yyyy.mm.dd to mm/dd/yyyy
>fixdfmt() {
>  [[ -n $1 ]] || { echo "ERROR: Nothing passed to function 'fixdfmt'"; return 1; }
>  year=${1//.*}
>  day=${1##*.}
>  mo=${1%.*}
>  mo=${mo##*.}
>  echo "${mo}/${day}/${year}"
>  return 0
>}

An fun alternative I came up with:

fixdfmt() {
    test -z "$1" && {
        echo "ERROR: Nothing passed to function 'fixdfmt'" >&2;
        return 1;
    }
    _fixdfmt() { echo "$3/$2/$1"; }
    oIFS="$IFS"; IFS="."
    _fixdfmt $1
    IFS="$oIFS"
    # unset _fixedfmt
}

>## parse dates from $tmpfn to get start and end dates for tape index
>getdates() {
>  OLDIFS=$IFS
>  IFS=$'\n'
>  clipct=1
>  for i in $(grep \"d $tmpfn); do
>    dt=${i//\"dcrv-}
>    dt=${dt//_*}
>    [[ $clipct -eq 1 ]] && first_dt=$(fixdfmt $dt)
>    ((clipct++))
>  done
>  last_dt=$(fixdfmt $dt)
>  IFS=$OLDIFS
>}
>
>## download video with output to tmpfn & rewind tape when done
>echo -e "\nCapture Started: $(date '+%b %e %T')\n" | tee -a $tmpfn

date '+\nCapture Started: %b %e %T\n' | tee -a $tmpfn

>dvgrab -rewind -timestamp -autosplit=3600 -format raw dcrv- 2>&1 | tee -a $tmpfn
>dvcont rewind
>
>## fix the \r issue
>cat $tmpfn | sed 's/^[[:space:]]*\r//' > /tmp/fix.log
>cp /tmp/fix.log $tmpfn

You could combine that with the grep. Do you get those \r on the same
lines as the '"dcrv-'?

Alternatively:

sed -i 's/^[[:space:]]*\r//' $tmpfn

HTH,
-dnh

-- 
If you don't see why, please stay the fuck away from my code.
                                      -- Paul "Rusty" Russel,
  in /usr/src/linux/Documentation/DocBook/kernel-locking.tmpl
-- 
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx


<Anterior por Tema] Tema Actual [Siguiente por Tema>