Den Inhalt einer Datei duplizieren

Den Inhalt einer Datei duplizieren

Ich habe eine Anforderung, bei der ich, wenn eine bestimmte Bedingung erfüllt ist, den gesamten Inhalt einer Datei in dieselbe Datei duplizieren muss. Hier ist die Datei:

$ cat in.txt
ip
10.22.1.34
10.22.1.35

Wenn eine Bedingung erfüllt ist, zum Beispiel

if [[ d=1 ]]; then
copy the file content
fi

der Inhalt der Datei sollte wie folgt dupliziert werden:

ip
10.22.1.34
10.22.1.35
ip
10.22.1.34
10.22.1.35

Antwort1

Sie können Dateiinhalte in Variablen speichern (es werden Zeilenumbrüche gespeichert) und diese dann an dieselbe Datei anhängen. Denken Sie daran, Variablen in Anführungszeichen zu setzen.

x=$(cat test.txt) && echo "$x" >> test.txt

Oder verwenden Sie den Befehl „tee“, um direkt an dieselbe Datei anzuhängen. Lassen Sie sich nicht verwirren, wenn in der Standardausgabe zuerst der Originalinhalt der Datei angezeigt wird, denn gleichzeitig wird der tatsächliche Inhalt der Datei dupliziert.

cat test.txt | tee -a test.txt

Wenn Sie nicht möchten, dass die Ausgabe von tee sichtbar ist, können Sie natürlich Folgendes tun:

    cat test.txt | tee -a test.txt > /dev/null

Antwort2

Sie können beispielsweise Folgendes tun: cat in.txt > /tmp/tmp.txt && cat /tmp/tmp.txt >> in.txt

Antwort3

A cat file.txt >> file.txtsollte funktionieren, >>hängt den Inhalt von stdout am Ende der angegebenen Datei an

Antwort4

Sie können versuchen cat, die Datei zu tingen und dann mit sed einen Anhang anzufügen. Also etwa so:

cat in.txt
ip
10.22.1.34
10.22.1.35

d=1
if [ ${d} -eq 1 ]; then
    cat in.txt | while read LINE; do sed -i '$a\'"${LINE}" in.txt; done
fi

cat in.txt
ip
10.22.1.34
10.22.1.35
ip
10.22.1.34
10.22.1.35

verwandte Informationen