awk

Seite 1 von 1 - Forum: Linux and other OS auf overclockers.at

URL: https://www.overclockers.at/linux/awk_171402/page_1 - zur Vollversion wechseln!


lama007 schrieb am 10.11.2006 um 22:22

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 schrieb am 10.11.2006 um 23:54

Seh ich das richtig, und das ist eigentlich eine Shell-Frage?
Was soll das Script überhaupt machen?


NyoMic schrieb am 11.11.2006 um 00:39

die frage kapiere ich auch nicht ganz :confused:
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


lama007 schrieb am 11.11.2006 um 13:02

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


lama007 schrieb am 12.11.2006 um 13:56

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




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025