The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > UNIX voor Dummies Questions & Answers
.
google unix.com



UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!!

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
jar commando niet wordt herkend orahi001 UNIX voor Dummies Questions & Answers 1 05-06-2008 10:29
Ophalen 5e veld naar laatste veld! jobbyjoseph UNIX voor Dummies Questions & Answers 3 05-16-2007 03:20
Bewegend deel van een gebied naar een ander veld met AWK rjsha1 Programmeren en Shell Scripting 5 08-04-2006 05:39
Ik ben niet wordt erkend Help Forum Support Ruimte voor Unregistered Gebruikers Account & Problemen 0 01-10-2006 04:30
Argument niet herkend als integer scmay Programmeren en Shell Scripting 1 05-14-2004 02: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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-07-2007
voa2mp3 voa2mp3 is offline
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Posten: 3
Post awk gebied niet in backquotes

Hoi,

Ik ben het schrijven van een script om awk gebruiken om een set van cp commando te genereren uit een input bestand abc.

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

gewenste output:
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) '

Ik probeerde awk gebruik met basename commando, maar het lijkt erop dat het veld $ 1 in aanhalingstekens openen niet wordt herkend door awk. How to fix it?

Hartelijk dank,
voa2mp3
  #2 (permalink)  
Old 10-07-2007
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Geregistreerd Geek
  
 

Join Date: december 2003
Locatie: Melbourne, Australië
Berichten: 2100
Een paar oplossingen

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
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Posten: 3
Hi zazzybob,

Bedankt voor je hulp.

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

Join Date: Apr 2007
Plaats: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 707
Hoi.
Citaat:
Oorspronkelijk geplaatst door voa2mp3 View Post
...
bestand abc:
/ data / a.dbf
/ data / juni / b.dbf

gewenste output:
CP --pr a.dbf / data / a.dbf
CP --pr b.dbf / data / juni / b.dbf
...
Het plaatsen van de ingang op fille "data1", en het veranderen van je script iets naar:
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
produceert:
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  
addict
  
 

Join Date: Jan 2007
Locatie: Варна, България / Milano, Italia
Berichten: 2854
Enkele andere manieren

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
en met 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
of 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

Bladwijzers

Labels
Linux commando's

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 03:24.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0