kongstrong
Well-Known Member
MoinMoin,
unter FreeBSD 11.2 und der Shell: /bin/sh erhalte ich anders als erwartet eine zusammen geführte Ausgabe von 2 sed die so Aussieht:
:
Das Shellscript dazu:
ich hatte eigentlich so eine Ausgabe erwartet:
Selbst wenn das Shellscript ohne Funktionen geschieben ist, (also einfach die "f1(){}" und "f1(){}" löschen) so das der Shellcode Zeile für Zeile abgearbeitet wird, selbe Ausgabe!?!
Ich kann das Verhalten der Ausgabe des Shellscriptes irgent wie nicht nach vollziehen, wo fehlt mir den jetzt die Logik ?
unter FreeBSD 11.2 und der Shell: /bin/sh erhalte ich anders als erwartet eine zusammen geführte Ausgabe von 2 sed die so Aussieht:
Code:
./123.sh
one
two
four
two
three
four
one
two
three
four
five
found
found
Das Shellscript dazu:
Bash:
#!/bin/sh
# Matching three lines with sed
# https://www.grymoire.com/Unix/Sed.html#uh-51
cat 123.txt << EOF
one
two
four
two
three
four
one
two
three
four
five
EOF
f1(){
sed -n '
/one/ {
N
/two/ {
N
/three/ {
#N
s/one\ntwo\nthree/found/p
}
}
}
' "123.txt"
}
f2(){
# sed mit variablen test
V_ONE="one"
V_TWO="two"
V_THREE="three"
sed -n "
/$V_ONE/ {
N
/$V_TWO/ {
N
/three/ {
#N
s/$V_ONE\n$V_TWO\n$V_THREE/found/p
}
}
}
" "123.txt"
}
f1
f2
ich hatte eigentlich so eine Ausgabe erwartet:
Bash:
./123.sh
one
two
four
two
three
four
one
two
three
four
five
found <-- Ende der ersten sed Funktion (f1)
one
two
four
two
three
four
one
two
three
four
five
found <-- Ende der zweiten sed Funktion (f2)
Selbst wenn das Shellscript ohne Funktionen geschieben ist, (also einfach die "f1(){}" und "f1(){}" löschen) so das der Shellcode Zeile für Zeile abgearbeitet wird, selbe Ausgabe!?!
Ich kann das Verhalten der Ausgabe des Shellscriptes irgent wie nicht nach vollziehen, wo fehlt mir den jetzt die Logik ?