awk
lama007 10.11.2006 - 22:22 969 4
lama007
OC Addicted
|
zwei Fragen: wie kann ich die Variable var1 in der awk-Zeile Muster nutzen? beim 'text' habe ich Probleme mit den einfachen Anführungszeichen trotz backslash; wie muss ich es schreiben, damit es funktioniert?
#! /bin/sh
echo -n "Muster :" read var1 awk '$1 ~ /var1/{print $1"\'text\'"}' /Ordner/Datei
|
that
Hoffnungsloser Optimist
|
Seh ich das richtig, und das ist eigentlich eine Shell-Frage? Was soll das Script überhaupt machen?
|
NyoMic
xepera-xeper-xeperu
|
die frage kapiere ich auch nicht ganz Du liest einen wert in die variable var1 ein und nutzt ihn dann nicht? Ev. meinst du: #! /bin/sh echo -n "Muster :" read var1 awk '$1 ~ /$var1/{print $1"'text'"}' /Ordner/Datei
Bearbeitet von NyoMic am 11.11.2006, 01:19
|
lama007
OC Addicted
|
#! /bin/sh
# ich möchte diese Funktion für ein Konfigurationsskript zum laufen bringen
editconfig() { nr=$(awk '$1 ~ /$muster/{print NR }' $Datei) sed '$nr c \ $t$muster$wert' $Datei > ~/puff cat ~/puff > $Datei }
# z.B.
Datei="/etc/sysconfig/network/ifcfg-eth-id-00:11:22:33:44:55" muster="BOOTPROTO=" wert="\'static\'" t= # editconfig
Datei="/etc/bluetooth/rfcomm.conf" muster="bind" wert=" yes;" t="\t" # editconfig
Datei="/etc/bluetooth/rfcomm.conf" muster="bind" wert=" yes;" t="\t"
# funktioniert: # # nr=$(awk '$1 ~ /bind/{print NR }' $Datei) #### 7 # sed '7 c \ # \tbind yes;' $Datei > ~/puff # cat ~/puff ############# > $Datei
# einfache Anführungszeichen: # Variablen funktionieren nicht # und Text in einfachen Anführungszeichen (z.B \\'static\\') macht Probleme # # nr=$(awk '$1 ~ /$muster/{print NR }' $Datei) # sed '$nr c \ # $t$muster$wert' $Datei > ~/puff # cat ~/puff ##### > $Datei
# doppelte Anführungszeichen: # awk-Fehlermeldung # awk: ~ /bind/{print NR } # awk: ^ syntax error # und \t wird als normaler Text gelesen ( tbind yes; ) # # nr=$(awk "$1 ~ /$muster/{print NR }" $Datei) # sed "$nr c \ # $t$muster$wert" $Datei > ~/puff # cat ~/puff ##### > $Datei
Bearbeitet von lama007 am 11.11.2006, 13:06
|
lama007
OC Addicted
|
so funktioniert es:
#! /bin/sh
editconfig() { nr=$(awk -v mu="$muster" '$1 ~ mu {print NR }' $Datei) sed "$nr c \ $t$muster$wert" $Datei > ~/puff cat ~/puff > $Datei }
Datei="/etc/bluetooth/rfcomm.conf" muster="bind" wert=" yes;" t="\ "
editconfig
|