Ich brauche Hilfe beim Ersetzen einer Zeichenfolge in einer Datei, wo "von" - "zu" Zeichenfolgen aus einer bestimmten Datei kommen.Ersetzen Zeichenfolge in einer Datei aus einer Datei
fromto.txt:
"TRAVEL","TRAVEL_CHANNEL"
"TRAVEL HD","TRAVEL_HD_CHANNEL"
"FROM","TO"
Erste Spalte ist das, was ich für, bin auf der Suche, die mit der zweiten Spalte ersetzt werden soll.
Bisher habe ich dieses kleine Skript:
while read p; do
var1=`echo "$p" | awk -F',' '{print $1}'`
var2=`echo "$p" | awk -F',' '{print $2}'`
echo "$var1" "AND" "$var2"
sed -i -e 's/$var1/$var2/g' test.txt
done <fromto.txt
Ausgabe sieht gut aus (x und y), aber aus irgendeinem Grund ist es nicht die erste Spalte ($ var1) mit dem zweiten ($ var2) ersetzen .
test.txt:
"TRAVEL"
Ausgang:
"TRAVEL" AND "TRAVEL_CHANNEL"
sed -i -e 's/"TRAVEL"/"TRAVEL_CHANNEL"/g' test.txt
"TRAVEL HD" AND "TRAVEL_HD_CHANNEL"
sed -i -e 's/"TRAVEL HD"/"TRAVEL_HD_CHANNEL"/g' test.txt
"FROM" AND "TO"
sed -i -e 's/"FROM"/"TO"/g' test.txt
$ cat test.txt
"TRAVEL"
Um Ihnen den Einstieg zu erleichtern, arbeitet 'sed -i' direkt an einer Datei. Jetzt müssen Sie nur die Befehle für 'sed' herausfinden :) – bedwyr
Ja, ich kann sed Befehl vor jeder Zeile hinzufügen, aber die tatsächliche" fromto.txt "ist ziemlich groß. Es ist irgendwie möglich, diese Variablen/Argumente für sed aus einer Datei zu lesen? – Adrian
Das ist eine hilfreiche Klarstellung - es ist nicht sofort aus der Beschreibung ersichtlich. So wie ein einfaches Rezept (dies kann von der Shell-Eingabeaufforderung durchgeführt werden): 1. für jede Zeile in der Datei; 2. Teilen Sie die Linie, extrahieren Sie die Werte zwischen den ""; 3. Verwenden Sie diese Werte in einem "sed" -Befehl zum Ersetzen (zB 'sed -i 's/$ val1/$ val2/g'') Sinn machen? – bedwyr