sed + xargs

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
klal
Beiträge: 239
Registriert: 20.12.2007 12:16:41

sed + xargs

Beitrag von klal » 25.03.2008 15:40:05

Hallo,
ich möchte eine Textdatei erstellen in der Wortpaare stehen, die gegeneindander ausgetauscht werden sollen:


bspw. beispielsweise
d.h. "das heisst"
usw. "und so weiter"



Dann möchte ich mit sed diese Wortpaare in einer anderen Textdatei austauschen lassen.

mit "xargs -n2 " kann ich jeweils ein Wortpaar aus der Tauschdatei auslesen.

Wie gebe ich diese beiden Wortpaare so an "sed" das daraus "sed 's/wort1/wort2/g' Eingabedatei" wird?


Grüße
K.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 25.03.2008 17:21:26

Angenommen, Deine Datei mit den Austauschelementen hiesse "austausch-liste.txt" mit ff. Inhalt:

Code: Alles auswählen

bspw.;beispielsweise
d.h.;das heisst
usw.;und so weiter
Und Deine Beispieldatei "test-text.txt" mit ff. Inhalt:

Code: Alles auswählen

bspw. hallo
d.h. mistersixt
hallo klal
Dann könnte ein Beispiel-Script so aussehen (als Anregung):

Code: Alles auswählen

#!/bin/bash

IFS=";"
while read NAME1 NAME2 
do 
        echo
        echo "Arbeite an \"$NAME1\"/\"$NAME2\"..."
        sed "s/$NAME1/$NAME2/g" /pfad/zu/test-text.txt
done < /pfad/zu/austausch-liste.txt
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

klal
Beiträge: 239
Registriert: 20.12.2007 12:16:41

Beitrag von klal » 26.03.2008 11:36:02

Hallo,
und danke für die Antwort. :)

Habe noch eine andere Lösung bekommen, die ohne Schleife arbeitet:


[code]sed -e 's/\([^ ]\+\) \(.\+\)/s\/\1\/\2\/g/g' < test.lst > test.sed && sed -f test.sed < src.txt[/code]

Dabei ist:
test.lst -> die Liste mit den Wortpaaren
test.sed -> das aus test.lst generierte sed-Skript
src.txt -> die zu bearbeitende Textdatei

Grüße
K.

Antworten