The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > UNIX for Dummies Domande & Risposte
.
google unix.com



UNIX for Dummies Domande & Risposte Se non sei sicuro dove pubblicare un UNIX o Linux domanda, posta da qui. Tutti i neofiti di Linux e UNIX benvenuto!

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
vaso di comando non viene riconosciuto orahi001 UNIX for Dummies Domande & Risposte 1 05-06-2008 10:29 AM
Recupera 5. Campo di ultimo campo! jobbyjoseph UNIX for Dummies Domande & Risposte 3 05-16-2007 03:20 AM
Spostamento di parte di un campo ad un altro campo utilizzando AWK rjsha1 Shell scripting e di programmazione 5 08-04-2006 05:39 AM
Non mi è riconosciuto Aiuto Forum di Supporto Area per utenti non registrati e account Problemi 0 01-10-2006 04:30 AM
Argomento non riconosciuto come numero intero scmay Shell scripting e di programmazione 1 05-14-2004 02:41 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 10-07-2007
voa2mp3 voa2mp3 is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2007
Interventi: 3
Post awk non riconosciuto nel campo backquotes

Salve,

Sto scrivendo uno script per usare awk per generare una serie di comandi da un cp file di input abc.

abc file:
/ dati / a.dbf
/ dati / giugno / b.dbf

output desiderato:
cp --pr a.dbf / dati / a.dbf
cp --pr b.dbf / dati / giugno / b.dbf

sceneggiatura:
$ Cat abc | awk '(print "cp --pr ' `basename $ 1`' "$ 1) '

Ho provato a usare awk con basename comando, ma sembra che il campo $ 1 in backquotes non è riconosciuto da awk. Come risolvere il problema?

Molte grazie,
voa2mp3
  #2 (permalink)  
Old 10-07-2007
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registrato Geek
  
 

Iscriviti Data: dicembre 2003
Località: Melbourne, Australia
Interventi: 2.100
A pochi soluzioni

awk:
Codice:
$ awk '{s=$0;gsub( /^.*\//, "" );printf("cp -pr %s %s\n", $0, s )}' abc
cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
sed:
Codice:
$ sed 's!^\(.*\)/\(.*\)!cp -pr \2 \1/\2!' abc 
cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
bash / ksh:
Codice:
$ while read file; do echo "cp -pr ${file##*/} ${file}"; done < abc 
cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
  #3 (permalink)  
Old 10-07-2007
voa2mp3 voa2mp3 is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2007
Interventi: 3
Hi zazzybob,

Grazie per aiuto.

voa2mp3
  #4 (permalink)  
Old 10-07-2007
drl's Avatar
DRL drl is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: aprile 2007
Località: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Interventi: 708
Salve.
Citazione:
Originalmente inviato da voa2mp3 View Post
...
abc file:
/ dati / a.dbf
/ dati / giugno / b.dbf

output desiderato:
cp --pr a.dbf / dati / a.dbf
cp --pr b.dbf / dati / giugno / b.dbf
...
Immissione di immissione sul fille "data1", e cambiare il vostro script leggermente a:
Codice:
#!/usr/bin/env sh

# @(#) a1       Demonstrate awk feature "command | getline".

set -o nounset
echo

## Use local command version for the commands in this demonstration.

echo "(Versions of codes used in this script -- local code \"version\")"
version bash awk

echo

awk '
        { command = "basename " $1
        command | getline file
        print "cp -pr " file " " $1 }
' data1

exit 0
produce:
Codice:
% ./a1

(Versions of codes used in this script -- local code "version")
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
GNU Awk 3.1.4

cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
cheers, DRL
  #5 (permalink)  
Old 10-07-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Iscriviti Data: gennaio 2007
Ubicazione: Варна, България / Milano, Italia
Interventi: 2.860
Alcuni altri modi

Codice:
% set -- $(<file)                                                   
% paste -d" " <(printf "cp -pr %s\n" "${@##*/}") <(printf "%s\n" "$@")
cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
e con zsh:

Codice:
zsh 4.3.4% <file while IFS= read;do print -r "cp -pr $REPLY:t $REPLY";done 
cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
o awk:

Codice:
zsh 4.3.4% awk '$0="cp -pr "$NF" "$0' FS="/" file
cp -pr a.dbf /data/a.dbf
cp -pr b.dbf /data/june/b.dbf
Closed Thread

Segnalibri

Tag
linux comandi

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 12:24 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0