URL: https://www.overclockers.at/linux/awk_171402/page_1 - zur Vollversion wechseln!
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
Seh ich das richtig, und das ist eigentlich eine Shell-Frage?
Was soll das Script überhaupt machen?
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
#! /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
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