ubuntuusers.de

Array String durch Array String ersetzen

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

jd137

Anmeldungsdatum:
28. Juni 2018

Beiträge: 1

Hallo zusammen,

ich möchte mit dem unten gegebenen Code gefundene array1[i] Strings in der test.log durch die passenden array2[i] Strings ersetzen. Ich komme aber absolut nicht weiter und brauche Hilfe oder einen Tipp wie ich das lösen kann.

1
cat test.log | sed "s|${array1[$i]}|${array2[$i]}|"

@sry falsche Frage im falschen Forum diese hier sollte hier rein.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Wenn ich dein Problem richtig verstehe, sollte das in der Bash genügen:

1
mapfile -n 0 -t array < <(awk '{print $2}' failedLogins.log)

Wenn du nur eine bestimmte Zahl von Zeilen einlesen willst, kannst du die Nummer für das Argument -n anders als 0 setzen.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Ist ja gemein einfach mittendrin die Frage zu ändern ...

Man könnte z.B. eine temporäre Datei mit den resultierenden sed-Befehlen anlegen und die dann von sed verarbeiten lassen:

1
2
3
4
5
echo > /tmp/sed_commands
for i in ((i=0;i<${#array1[@]};++i));; do
    echo "s|${array1[$i]}|${array2[$i]}|g" >> /tmp/sed_commands
done
sed -f /tmp/sed_commands test.log
Antworten |