The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX para Dummies Perguntas & Respostas
.
google unix.com



UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos!

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
jar comando não for reconhecido orahi001 UNIX para Dummies Perguntas & Respostas 1 05-06-2008 11:29
Campo 5. Obter a última Campo! jobbyjoseph UNIX para Dummies Perguntas & Respostas 3 05-16-2007 04:20
Movendo parte de um campo para outro campo utilizando Awk rjsha1 Programação Shell Script e 5 08-04-2006 06:39
Eu não estou sendo reconhecido Ajuda Fórum de Suporte Área Unregistered Users Conta & Problemas 0 01-10-2006 04:30
Argumento não é reconhecido como inteiro scmay Programação Shell Script e 1 05-14-2004 03:41

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 Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-07-2007
voa2mp3 voa2mp3 is offline
Usuário
  
 

Join Date: Oct 2007
Posts: 3
Post awk campo não reconhecidas em backquotes

Oi,

Estou escrevendo um script para usar awk para gerar um conjunto de comandos de um pc ficheiro abc.

abc arquivo:
/ dados / a.dbf
/ dados / junho / b.dbf

saída desejada:
CP --pr a.dbf / dados / a.dbf
CP --pr b.dbf / dados / junho / b.dbf

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

Eu tentei usar awk basename com comando, mas parece que o campo $ 1 em backquotes não é reconhecida pelo awk. Como corrigir isso?

Muito obrigado,
voa2mp3
  #2 (permalink)  
Old 10-07-2007
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registrado Geek
  
 

Join Data: dezembro 2003
Localização: Melbourne, Austrália
Posts: 2.100
Algumas soluções

awk:

Código:
$ 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:

Código:
$ 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:

Código:
$ 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
Usuário
  
 

Join Date: Oct 2007
Posts: 3
Oi zazzybob,

Obrigado por te ajudar.

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

Join Date: Apr 2007
Localização: Saint Paul, MN E.U.A. / BSD, CentOS, Debian, Mac OS X, Solaris
Lugares: 712
Oi.
Citação:
Originally Posted by voa2mp3 View Post
...
abc arquivo:
/ dados / a.dbf
/ dados / junho / b.dbf

saída desejada:
CP --pr a.dbf / dados / a.dbf
CP --pr b.dbf / dados / junho / b.dbf
...
Colocar a entrada de fille "Data1", e alterar ligeiramente o seu script para:

Código:
#!/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

produz:

Código:
% ./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  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.915
Algumas outras formas


Código:
% 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 com zsh:


Código:
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

ou awk:


Código:
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

Marcadores

Tags
linux comandos

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 03:11.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0