Code: Alles auswählen
voyager:/tmp# sed '/192.168.11.8/ c\192.168.11.8 TABULATOR nb-es\' /etc/hosts > /tmp/korrekt
Dort wo jetzt TABULATOR steht möchte ich das zeichen welches sed als TAB akzeptiert.
danke für eure hilfe
Code: Alles auswählen
voyager:/tmp# sed '/192.168.11.8/ c\192.168.11.8 TABULATOR nb-es\' /etc/hosts > /tmp/korrekt
Code: Alles auswählen
\t
Code: Alles auswählen
voyager:/tmp# sed '/192.168.11.8/ c\192.168.11.8 \t nb-es\' /tmp/hosts
voyager:/tmp# sed '/192.168.11.8/ c\192.168.11.8 \\t nb-es\' /tmp/hosts
Code: Alles auswählen
192.168.11.200 SAMBA
192.168.11.8 \t nb-es
192.168.11.9 NB-MORITZ
Code: Alles auswählen
sed '/\b192.168.11.8\b/ c192.168.11.8\tnb-es' /tmp/hosts
Code: Alles auswählen
sed '/\b192.168.11.8\b/ c192.168.11.8\tnb-es' /etc/hosts > /tmp/hosts
Code: Alles auswählen
sed "/192.168.11.8/ c\\192.168.11.8 \t nb-es\\" /tmp/hosts > /tmp/hostsssssssss
Code: Alles auswählen
192.168.11.200 SAMBA
192.168.11.8 \t nb-es
192.168.11.9 NB-MORITZ
ich vermute, dass Du schon in der "/tmp/hosts" dieses "\t" drin hastroll hat geschrieben:bei mir funktionionierts nicht!!!Code: Alles auswählen
sed "/192.168.11.8/ c\\192.168.11.8 \t nb-es\" /tmp/hosts > /tmp/hostsssssssss
Code: Alles auswählen
sed '/\b192.168.11.8\b/ c192.168.11.8\tnb-es' /etc/hosts > /tmp/hostsssssssss
Code: Alles auswählen
cat /tmp/hostsssssssss
Code: Alles auswählen
hostname="`grep $i /tmp/temp | cut -f2`";
sed "/$i/ c\\$i\t$hostname\\" /tmp/hosts | grep $i >> /tmp/resultat
Code: Alles auswählen
192.168.11.200 SAMBA
192.168.11.8 NB-ES
192.168.11.9 NB-MORITZ
Code: Alles auswählen
192.168.11.202 ws-test
192.168.11.8 nb-test
Code: Alles auswählen
192.168.11.200 SAMBA
192.168.11.9 NB-MORITZ
192.168.11.202 ws-test
192.168.11.8 nb-test
Code: Alles auswählen
gms1:~# sed "/192.168.11.8/ c\\192.168.11.8 \t nb-es\\" /tmp/hosts
192.168.11.200 SAMBA
192.168.11.8 \t nb-es
192.168.11.9 NB-MORITZ
gms1:~# sed "/192.168.11.8/ c192.168.11.8 \t nb-es" /tmp/hosts
192.168.11.200 SAMBA
192.168.11.8 nb-es
192.168.11.9 NB-MORITZ
Code: Alles auswählen
#!/bin/bash
rm /tmp/hosts-tmp;
rm /tmp/hosts-finale;
for i in `cut -f1 /tmp/hosts-neu`; do
gefunden="`grep $i /tmp/hosts`";
if [ $? != "0" ]; then
grep $i /tmp/hosts-neu >> /tmp/hosts-tmp;
else
hostname="`grep $i /tmp/hosts-neu | cut -f2`";
sed "/$i/ c$i\t$hostname" /tmp/hosts | grep $i >> /tmp/hosts-tmp
fi
done
cat /tmp/hosts-tmp > /tmp/hosts-finale;
cat /tmp/hosts | grep -v -f /tmp/hosts-tmp >> /tmp/hosts-finale;
ist richtig in der Doku stehen die, aber so funktionierts auch mit den Backslashes (nur EIN Blank am Ende eingefügt)roll hat geschrieben:diese backslashs hatte ich aus meinem script buch, dort ist ein abschnitt über SED. natürlich habe ich mich auf das BUCH verlassen
Code: Alles auswählen
gms1:~# sed "/192.168.11.8/ c\\192.168.11.8 \t nb-es\\ " /tmp/hosts
192.168.11.200 SAMBA
192.168.11.8 nb-es
192.168.11.9 NB-MORITZ