The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > UNIX for dummyer Spørgsmål & svar
.
google unix.com



UNIX for dummyer Spørgsmål & svar Hvis du ikke ved, hvor man skal sende en UNIX-eller Linux-spørgsmål, efter det her. Alle UNIX og Linux newbies velkommen!

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
jar kommando ikke genkendt orahi001 UNIX for dummyer Spørgsmål & svar 1 05-06-2008 10:29 AM
Hent 5. Felt til sidste felt! jobbyjoseph UNIX for dummyer Spørgsmål & svar 3 05-16-2007 03:20 AM
Bevægelige dele i et område til et andet felt ved hjælp AWK rjsha1 Shell Programmering og Scripting 5 08-04-2006 05:39 AM
Jeg er ikke at blive genkendt Hjælp Forum Support område for ikke registrerede brugere & Account Problemer 0 01-10-2006 04:30 AM
Argumentet er ikke anerkendt som heltal scmay Shell Programmering og Scripting 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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 10-07-2007
voa2mp3 voa2mp3 is offline
Registreret Bruger
  
 

Join Date: oktober 2007
Stillinger: 3
Post awk området ikke er anerkendt i backquotes

Hej,

Jeg skriver et script til at bruge awk til at generere et sæt af cp-kommandoer fra en inddatafil abc.

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

ønskede effekt:
CP --PR a.dbf / data / a.dbf
CP --PR b.dbf / data / juni / b.dbf

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

Jeg forsøgte at bruge awk med basename kommando, men det lader til, at feltet $ 1 i backquotes ikke er anerkendt af awk. Sådan løser du problemet?

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

Join Date: Dec 2003
Location: Melbourne, Australien
Stillinger: 2100
Et par 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
Registreret Bruger
  
 

Join Date: oktober 2007
Stillinger: 3
Hi zazzybob,

Tak, fordi du hjælpe.

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

Join Date: Apr 2007
Beliggenhed: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 711
Hej.
Citat:
Oprindeligt Indsendt af voa2mp3 View Post
...
fil abc:
/ data / a.dbf
/ data / juni / b.dbf

ønskede effekt:
CP --PR a.dbf / data / a.dbf
CP --PR b.dbf / data / juni / b.dbf
...
Placering af input om fille "data1", og ændre dit script lidt 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
producerer:
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
cheers, DRL
  #5 (permalink)  
Old 10-07-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
narkoman
  
 

Join Date: Jan 2007
Beliggenhed: Варна, България / Milano, Italia
Indlæg: 2.869
Nogle andre måder

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

Bogmærker

Tags
linux kommandoer

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 05:53 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0