The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for Dummies Spørsmål og svar
.
google unix.com



UNIX for Dummies Spørsmål og svar Hvis du er usikker på hvor du skal legge inn en UNIX-eller Linux-spørsmålet, legger den her. Alle UNIX og Linux newbies velkommen!

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
jar kommandoen ikke blir gjenkjent orahi001 UNIX for Dummies Spørsmål og svar 1 05-06-2008 11:29
Hent 5te Felt til siste feltet! jobbyjoseph UNIX for Dummies Spørsmål og svar 3 05-16-2007 04:20
Moving Del av et felt til et annet felt som bruker awk rjsha1 Shell programmering og Skripting 5 08-04-2006 06:39
Jeg er ikke gjenkjent Hjelp Forum Support for uregistrerte brukere & Account Problemer 0 01-10-2006 04:30
Argumentet er ikke som heltall scmay Shell programmering og Skripting 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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 10-07-2007
voa2mp3 voa2mp3 is offline
Registrert bruker
  
 

Bli Dato: Oct 2007
Innlegg: 3
Post awk feltet ikke gjenkjent i backquotes

Hei,

Jeg skriver et manus for å bruke awk å generere et sett med cp kommandoer fra en inndatafil abc.

fil abc:
/ data / a.dbf
/ data / juni / b.dbf

ønsket effekt:
cp --pr a.dbf / data / a.dbf
cp --pr b.dbf / data / juni / b.dbf

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

Jeg prøvde å bruke awk basename med kommandoen, men det synes at feltet $ 1 i backquotes er ikke anerkjent av awk. Slik løser du dette?

Mange takk,
voa2mp3
  #2 (permalink)  
Old 10-07-2007
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Registrert Geek
  
 

Bli Dato: desember 2003
Sted: Melbourne, Australia
Innlegg: 2100
Noen løsninger

awk:

Code:
$ 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:

Code:
$ 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:

Code:
$ 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
Registrert bruker
  
 

Bli Dato: Oct 2007
Innlegg: 3
Hi zazzybob,

Takk for at du hjelper.

voa2mp3
  #4 (permalink)  
Old 10-07-2007
drl's Avatar
drl drl is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: april 2007
Beliggenhet: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Innlegg: 717
Hei.
Sitat:
Originally Posted by voa2mp3 View Post
...
fil abc:
/ data / a.dbf
/ data / juni / b.dbf

ønsket effekt:
cp --pr a.dbf / data / a.dbf
cp --pr b.dbf / data / juni / b.dbf
...
Plassere inngangen på fille "Data1", og endrer skriften litt til:

Code:
#!/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

produserer:

Code:
% ./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

Skål, drl
  #5 (permalink)  
Old 10-07-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
stoffmisbruker
  
 

Bli Date: Jan 2007
Beliggenhet: Варна, България / Milano, Italia
Innlegg: 2928
Noen andre måter


Code:
% 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

og med zsh:


Code:
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

eller awk:


Code:
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

Hugseliste

Tags
linux-kommandoer

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 08:37.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0