opensuse
[Arriba] [Todas las Listas]

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

To: suse <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 C. Rankin" <drankinatty@xxxxxxxxxxxxxxxxxx>
Date: Sat, 01 Oct 2011 20:33:31 -0500
Delivered-to: opensuse@xxxxxxxxxxxxxxxxxxx
Delivery-date: Sat, 01 Oct 2011 21:33:52 -0400
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <20110930125825.GA14110@grusum.endjinn.de>
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>
Mailing-list: contact opensuse+help@xxxxxxxxxxxx; run by mlmmj
Organization: Rankin Law Firm, PLLC
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> <20110930125825.GA14110@grusum.endjinn.de>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20110922 Thunderbird/7.0
En 09/30/2011 07:58 AM, David *Haller escribió:
## *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; }

<*snip>

tengo ve esto el 'condición <de prueba>' versos [[ <condición> ]] versos [ <condición> ] argumentos un número de tiempo y no entiende bastante sobre las diferencias. Sé el [[ <condición> ]] era un 'mejora' sobre el [ <condición> ] *notation, pero otro que las ofertas de prueba de la flexibilidad en probar puesto que 'orden' éxito de regreso o fracaso bastante que condiciones <condicionales> (*eg. ==, -*eq, *etc...) No sé donde las mentiras de preocupación primarias. *Posix Compatibilidad??

Algunos 'trucos' todavía requerir el viejo [ <condición> ] o 'prueba' construye y no trabajará con [[ <condición> ]]. Por ejemplo el *integer prueba:

si [ $*var -*eq $*var ] >/*dev/*null; entonces
  *printf "\$*var -- es un *integer"
más
  *printf "\$*var -- NO es un *integer"
*fi

si prueba $*var -*eq $*var >/*dev/*null; entonces
  *printf "\$*var -- es un *integer"
más
  *printf "\$*var -- NO es un *integer"
*fi

  *Dunno por qué, pero lo sé es tan :)

>## 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
}

Claramente muestra los niveles de experiencia relativos entre autores - versos de poesía un párrafo sencillo. Utilizando IFS puesto que es pretendido el propósito es claramente ilustrado en vez de utilizarlo como martillo :)


>## *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


*Damn, supe tendría que mirar algo arriba de en 'hombre *bash' en el curso de esta discusión :)

>*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

*Err... *umm..., pienso tan??

00000060  2*e 2*e 2*e 0#uno 43 61 70 74  75 72 65 20 53 74 61 72  |....Estrella de captura|
00000070  74 65 64 0#uno 22 64 63 72  76 2*d 32 30 30 33 2*e 30  |*ted."*dcrv-2003.0|
00000080  37 2*e 32 37 5*f 31 38 2*d  30 35 2*d 35 34 2*e 64 76  |7.27_18-05-54.*dv|
00000090  22 3#uno 20 20 20 39 39 39  2*e 39 38 20 4*d 69 42 20  |":   999.98 *MiB |
000000#uno0  20 38 37 33 38 20 66 72  61 6*d 65 73 20 74 69 6*d  | 8738 marcos *tim|
000000*b0  65 63 6*f 64 65 20 30 30  3#uno 30 34 3#uno 35 31 2*e 31  |*ecode 00:04:51.1|
000000*c0  38 20 64 61 74 65 20 32  30 30 33 2*e 30 37 2*e 32  |8 fecha 2003.07.2|
000000*d0  37 20 31 38 3#uno 32 36 3#uno  34 36 0#uno 0*d 20 20 20 20  |7 18:26:46..    |
000000*e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000120  20 20 20 20 20 20 20 20  20 20 20 20 0*d 22 64 63  |            ."*dc|
00000130  72 76 2*d 32 30 30 33 2*e  30 37 2*e 32 37 5*f 31 38  |*rv-2003.07.27_18|
00000140  2*d 32 36 2*d 34 36 2*e 64  76 22 3#uno 20 20 20 32 39  |-26-46.*dv":   29|
00000150  34 2*e 30 30 20 4*d 69 42  20 20 32 35 36 39 20 66  |4.00 *MiB  2569 *f|
00000160  72 61 6*d 65 73 20 74 69  6*d 65 63 6*f 64 65 20 30  |*rames *timecode 0|
00000170  30 3#uno 30 36 3#uno 31 37 2*e  31 31 20 64 61 74 65 20  |0:06:17.11 fecha |
00000180  32 30 30 33 2*e 30 37 2*e  32 37 20 31 38 3#uno 32 38  |2003.07.27 18:28|
00000190  3#uno 31 32 0#uno 0*d 20 20 20  20 20 20 20 20 20 20 20  |:12..           |
000001#uno0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*

  De hecho, lo parece es en una línea por él:

00000240  2*e 31 34 20 31 38 3#uno 35  33 3#uno 35 39 0#uno 0*d 20 20  |.14 18:53:59..  |
00000250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000290  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0*d 22  |              ."|
000002#uno0  64 63 72 76 2*d 32 30 30  33 2*e 30 38 2*e 31 36 5*f  |*dcrv-2003.08.16_|


*HTH,
-*dnh

  Él , *thanks!


--
David *C. *Rankin, *J.*D.,*P.*E.
--
A *unsubscribe, *e-correo: *opensuse+unsubscribe@xxxxxxxxxxxx
Puesto que órdenes adicionales, *e-correo: *opensuse+help@xxxxxxxxxxxx


On 09/30/2011 07:58 AM, David Haller wrote:
## 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; }

<snip>

I have see this the 'test <condition>' verses [[ <condition> ]] verses [ <condition> ] arguments a number of times and don't understand enough about the differences. I know the [[ <condition> ]] was an 'improvement' over the [ <condition> ] notation, but other than the flexibility test offers in testing for 'command' return success or failure rather than conditional <conditions> (eg. ==, -eq, etc...) I don't know where the primary concern lies. Posix compatibility??

Some 'tricks' still require the old [ <condition> ] or 'test' constructs and will not work with [[ <condition> ]]. For example the integer test:

if [ $var -eq $var ] >/dev/null; then
  printf "\$var -- is an integer"
else
  printf "\$var -- is NOT an integer"
fi

if test $var -eq $var >/dev/null; then
  printf "\$var -- is an integer"
else
  printf "\$var -- is NOT an integer"
fi

  Dunno why, but I know it is so :)

>## 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
}

Clearly shows the relative experience levels among authors - poetry verses a simple paragraph. Using IFS for it's intended purpose is clearly illustrated instead of using it as a hammer :)


>## 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


Damn, I knew I would have to look something up in 'man bash' in the course of this discussion :)

>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

Err... umm..., I think so??

00000060  2e 2e 2e 0a 43 61 70 74  75 72 65 20 53 74 61 72  |....Capture Star|
00000070  74 65 64 0a 22 64 63 72  76 2d 32 30 30 33 2e 30  |ted."dcrv-2003.0|
00000080  37 2e 32 37 5f 31 38 2d  30 35 2d 35 34 2e 64 76  |7.27_18-05-54.dv|
00000090  22 3a 20 20 20 39 39 39  2e 39 38 20 4d 69 42 20  |":   999.98 MiB |
000000a0  20 38 37 33 38 20 66 72  61 6d 65 73 20 74 69 6d  | 8738 frames tim|
000000b0  65 63 6f 64 65 20 30 30  3a 30 34 3a 35 31 2e 31  |ecode 00:04:51.1|
000000c0  38 20 64 61 74 65 20 32  30 30 33 2e 30 37 2e 32  |8 date 2003.07.2|
000000d0  37 20 31 38 3a 32 36 3a  34 36 0a 0d 20 20 20 20  |7 18:26:46..    |
000000e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000120  20 20 20 20 20 20 20 20  20 20 20 20 0d 22 64 63  |            ."dc|
00000130  72 76 2d 32 30 30 33 2e  30 37 2e 32 37 5f 31 38  |rv-2003.07.27_18|
00000140  2d 32 36 2d 34 36 2e 64  76 22 3a 20 20 20 32 39  |-26-46.dv":   29|
00000150  34 2e 30 30 20 4d 69 42  20 20 32 35 36 39 20 66  |4.00 MiB  2569 f|
00000160  72 61 6d 65 73 20 74 69  6d 65 63 6f 64 65 20 30  |rames timecode 0|
00000170  30 3a 30 36 3a 31 37 2e  31 31 20 64 61 74 65 20  |0:06:17.11 date |
00000180  32 30 30 33 2e 30 37 2e  32 37 20 31 38 3a 32 38  |2003.07.27 18:28|
00000190  3a 31 32 0a 0d 20 20 20  20 20 20 20 20 20 20 20  |:12..           |
000001a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*

  Actually, It looks like it is in a line by itself:

00000240  2e 31 34 20 31 38 3a 35  33 3a 35 39 0a 0d 20 20  |.14 18:53:59..  |
00000250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000290  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 22  |              ."|
000002a0  64 63 72 76 2d 32 30 30  33 2e 30 38 2e 31 36 5f  |dcrv-2003.08.16_|


HTH,
-dnh

  It does, thanks!


--
David C. Rankin, J.D.,P.E.
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx


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