2016-06-24 7 views
1

Ich habe eine Datei namens "test_file1". Ich möchte jede Zeile dieser Datei lesen und in eine andere Datei namens "test_file2" schreiben. Beide Dateien befinden sich im selben Verzeichnis.Zeile für Zeile lesen und in ein anderes Datei-Shell-Skript schreiben

Ich versuchte

#!/bin/sh 
# My first Script 
echo "Hello World!" 
file=$(<test_file1.txt) 
echo "Test" >> test_file2.txt 
while IFS= read -r line;do 
    echo -e "legendary" >> test_file2.txt 
    echo "$line" >> test_file2.txt 
done <"$file" 
echo "completed" 

Das Skript "Test" in test_file2.txt schreibt aber 'legendäre' oder die Linien in test_file1 in test_file2 nicht schreiben.

Kann jemand bitte helfen.

Vielen Dank.

Antwort

1

Verwenden Sie einfach die Datei direkt statt zuerst in ein Array zu lesen; zu tun, um Sie, dass der Wandel
done <"$file"-done < "test_file1.txt"

#!/bin/sh 
# My first Script 
echo "Hello World!" 
echo "Test" >> test_file2.txt 
while IFS= read -r line;do 
    echo -e "legendary" >> test_file2.txt 
    echo "$line" >> test_file2.txt 
done < "test_file1.txt" 
echo "completed" 
+0

Hallo DAXaholic, Danke . Funktioniert jetzt gut. !! –

+0

Es wäre viel effizienter, nach "done" eine einzige Umleitung zu machen, als die Datei innerhalb der Schleife wiederholt zu öffnen und zu schließen. Besser wäre es, dies durch ein sehr gutes Awk-Skript zu ersetzen; Eine Shell-Schleife zum Lesen und Schreiben von Zeilen ist häufig ein Antipattern. – tripleee

+0

Natürlich wäre es effizienter, ein awk-Skript zu schreiben - es wäre noch effizienter, eine native Anwendung in C zu schreiben :) Wenn dieses Skript Tausende von Zeilen verarbeitet, dann stimme ich zu und es sollte wahrscheinlich umstrukturiert werden. In diesem Fall nehme ich einfach an (bc mangelnde Infos), dass es keine so engen Perf - Einschränkungen gibt und daher ist es besser, dem Fragenden die fehlerhaften Teile seines eigenen Codes zu zeigen, anstatt ihm einen komplett neuen Code - Schnipsel zu geben (vielleicht sogar in eine andere Sprache), die vielleicht schwer zu verstehen ist. Trotzdem, danke für die zusätzliche Notiz! – DAXaholic

Verwandte Themen