[Linuxtrent] Re: Esempi shell.

  • From: AnSomM <ansomm@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Fri, 28 Oct 2011 11:15:58 +0200

Il 28 ottobre 2011 09:33, Michele Bert <micbert75@xxxxxxxxx> ha scritto:
> Ok, andiamo avanti. Devo cambiare il nome di una serie di files da
> *_torre_*.txt in "* torre *.txt"
>
> Il comando su un singolo file potrebbe essere:
>
> mv input_torre_04_07.txt "input torre 04_07.txt"
>
> oppure
>
> mv input_torre_04_07.txt input\ torre\ 04_07.txt
>
> La riga che mi viene in mente, basata sul primo dei due comendi, è:
>
> for file in *_torre_*.txt ; do mv  $file \"`echo $file |sed
> "s/_torre_/ torre /"`\"; done
>
> questa non va perché il comando mv vede gli spazi prima e dopo torre
> come separatori, e quindi si vede 4 argomenti invece di 2.
>
> Il secondo caso non riesco ad implementarlo, perché non trovo come
> inserire il carattere '\' nella stringa sostitutiva del comando sed.
>
> Idee?
>
> Michele
> --
> Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
> "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx
>
>
>
A volte si può rendere "più leggibile" il comando sed utilizzando un
separatore diverso dal " (doppio apice).
Ad esempio la @.

:~$ cat torre
Fra_torre_uno
Tra_torre_due
Per_torre_tre

:~$ cat torre|sed "s@_torre_@\\\ torre\\\ @"|sed "s/^/>/"|sed "s/$/</"
Fra\ torre\ uno
Tra\ torre\ due
Per\ torre\ tre

:~$  cat torre|sed "s@_torre_@\\\ torre\\\ @"
>Fra\ torre\ uno<
>Tra\ torre\ due<
>Per\ torre\ tre<
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: