lucas-o
Goto Top

Awk parameter aus dem Aufrufsyntax auslesen

Lösungsart egal.

Aufrufsyntax:

$ bash script1 such test1 /projects/ae/test.txt -t $1,$2

 

#!/bin/bash

suche=$2
datei=$3
filter=$4
spalte=$5


if [ "$filter" = "-t" ]  
        then
        awk '{print $2,$3}' $datei  
               
# Nun möchte ich eigentlich, dass die Zahlen im “print” automatisch von dem Script aus dem 
# Aufrufsyntax ausgelesen werden.                
 
elif [ "$filter" = "-l" ]  
        then
         cd /atix/projects/azubis/ae
        ls  $datei  
        
else
        egrep   "^$suche" "$datei"        
        
fi

vielen Dank schonmal

Content-Key: 192478

Url: https://administrator.de/contentid/192478

Printed on: April 16, 2024 at 17:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Oct 09, 2012 updated at 13:20:36 (UTC)
Goto Top
Sei auch ungegrüßt.

Zitat von @Lucas-O:

Aufrufsyntax:

$ bash script1 such test1 /projects/ae/test.txt -t $1,$2


awk '{print $2,$3}' $datei

Warum schreibst Du $2 $3 statt $suche und $datei?


  1. Nun möchte ich eigentlich, dass die Zahlen im “print” automatisch von dem Script aus dem
  2. Aufrufsyntax ausgelesen werden.

Wenn Du das noch so erklären könntest, daß jemand, der Dein Problem nicht kennt, weiß, was Du willst, könnte Dir vielleicht geholfen werden. Vermutlich mußt Du da nur \$spalte oder sowas in der Art hinschreiben, aber wir wissen ja nicht, was Du genau haben willst und was dein problem dabei ist.

lks
Member: Lucas-O
Lucas-O Oct 09, 2012 updated at 13:30:31 (UTC)
Goto Top
hi

1. weil es etwas anderes gemeint ist mit $1,$2 wird in dem fall die anzahl der spalten festgelegt die ausgegeben werden sollen
2 das problem nennt man glaub ich quoting...
3. ich möchte, dass die Zahlen im “print” automatisch von dem Script aus dem
Aufrufsyntax ausgelesen werden.

hoffe hilt ein wenig kanns auch nicht wirklich genauer erklären

lg
Member: Lucas-O
Lucas-O Oct 09, 2012 updated at 14:48:03 (UTC)
Goto Top
so hab es jetzt schon fast geschafft liest immerhin schon eine spalte die ich ihm übergebe aus)
aber jetzt muss es noch mehrere auslesen können. HELP pls!!!

Script:


#Aufrufsyntax: $ bash script1 such test1 /projects/ae/test.txt -t 1
#                                                $1      $2              $3              $4  $5 

suche=$2 
datei=$3 
filter=$4 
spalte=$5 


if [ "$filter" = "-t" ]   
        then 
        spalte=$5 
        datei=$3 
cat $datei | awk '{print $'$spalte'};'   
                
else 
        egrep   "^$suche" "$datei"        
        
fi 

versuche es grad mit shift (hab noch nie damit gearbeitet)
hilfe wird gern angenommen

schönen feierabend
Member: Lochkartenstanzer
Lochkartenstanzer Oct 09, 2012 at 15:08:19 (UTC)
Goto Top
N'Abend

Als Tip:

probier mal

export a=1 =2 c=3

echo x y z | gawk ' { print $3 "." $2 "." $1 "." '$`echo $a`' "." '$`echo $b`' "." '$`echo $c`' } ' 
lks
Member: Alchimedes
Alchimedes Oct 09, 2012 updated at 17:35:48 (UTC)
Goto Top
Hallo,

@Lukas

Du hast ein Wunderbares Buch ueber Shellscript Programmierung das solltest Du mal von Anfang bis Ende durcharbeiten.
shift verschiebt die in der Kommandozeile angegeben Argumente.

lese dazu Seite 149 ab da geht es los.

Desweiteren hat Dein script macken, also muss Du herausfinden welche.
Das kannst Du mit set -x ./Dein Script
Was sollen am Anfang $2 $3 etc ???


Umschreib doch mal die Aufgabe fuer uns genau.

Gruss
Member: Lucas-O
Lucas-O Oct 10, 2012 at 04:47:03 (UTC)
Goto Top
Morgen,

ich hab mir überlegt, mit shift zu arbeiten, weil man beliebig viele verschiedene spalten angeben können soll.
Nun bin ich gerade dabei, das shift mit einer while- Schleife ins script einzubinden.

@Alchimedes

1. die $1, $2 dienten mir eig. als orientierung, sie haben sich aber leider beim online stellen verschoben face-smile
2.Also ich schreibe ein Script zum suchen und variabel anpassbaren spalten ausgaben aus einnem .txt File

lg
Member: Lucas-O
Lucas-O Oct 10, 2012 updated at 13:33:49 (UTC)
Goto Top
so nun bin ich fast fertig.
wie kann man im script festlegen, dass wenn ich den aufrufsyntax festlege er vor jede zahl ein $ setzt?
bsp:
Aufrufsyntax:

$ bash script1 such test1 /projects/ae/test.txt -t "1 2 4"

txt file:

la li lu nur der
mann im mond schaut zu
wenn die kleinen kinder schlafen...

ergebnis:

la li nur
mann im schaut
wenn die kinder

vielen dank bis hierhin schonmal


helft mir bitte face-smile !!!
ich komme nicht weiter.
dabei muss ich "nur" noch rausfinden, fie ich im script festlegen kann, dass es for jede zahl am ende ein $ setzt...
Member: Lochkartenstanzer
Lochkartenstanzer Oct 10, 2012 updated at 16:04:11 (UTC)
Goto Top
Zitat von @Lucas-O:
so nun bin ich fast fertig.
wie kann man im script festlegen, dass wenn ich den aufrufsyntax festlege er vor jede zahl ein $ setzt?
bsp:
Aufrufsyntax:

$ bash script1 such test1 /projects/ae/test.txt -t "1 2 4"

txt file:

la li lu nur der
mann im mond schaut zu
wenn die kleinen kinder schlafen...

ergebnis:

la li nur
mann im schaut
wenn die kinder

vielen dank bis hierhin schonmal


helft mir bitte face-smile !!!
ich komme nicht weiter.
dabei muss ich "nur" noch rausfinden, fie ich im script festlegen kann, dass es for jede zahl am ende ein $ setzt...

Hast Du

Awk parameter aus dem Aufrufsyntax auslesen

ausprobiert?

Dann sollte es sofort ins Auge springen. Die Variablen a b und c kannst Du statt direkt zu setzen natürlich auch aus Variablen füttern (oder gleich die variablen in im awk-skript benutzen).

lks

PS: Perm PM gibt es normalerweise keine kostenlosen Support. Du kannst Dich aber hier schlaumachen.
Member: Lochkartenstanzer
Lochkartenstanzer Oct 11, 2012 at 07:38:44 (UTC)
Goto Top
Zitat von @Lucas-O:
dabei muss ich "nur" noch rausfinden, fie ich im script festlegen kann, dass es for jede zahl am ende ein $ setzt...

Und hast Du das was ich Dir geschrieben habe schon probiert. Da steht genau das drin.

lks
Member: Lucas-O
Lucas-O Oct 11, 2012 at 10:03:29 (UTC)
Goto Top
ja das hat gut funktioniert ich habe jetzt bloß mehrere sachen ausprobiert einmel mit deinem einmal mit awk und einmal mit cut
danke für deine hilfe face-smile
schönen tag noch face-smile