Verwenden des Mac-Terminals zum Einfügen einer Zeile in eine Textdatei, die den Dateinamen enthält

Verwenden des Mac-Terminals zum Einfügen einer Zeile in eine Textdatei, die den Dateinamen enthält

Ich verwende Terminal auf dem Mac und habe eine Reihe von Textdateien, die jeweils Daten wie diese enthalten:

300.50 253.50
301.00 156.26
301.50 191.57

Ich möchte eine Überschrift für die Spalten einfügen, wobei die erste mit „Wellenlänge“ und die zweite mit dem Dateinamen beschriftet ist, sodass sie folgendermaßen aussieht (der Abstand spielt keine Rolle, solange er durch ein Leerzeichen abgegrenzt ist):

Wavelength Filename
300.50 253.50
301.00 156.26
301.50 191.57

Ich habe eine Schleife, die „Wavelength“ in jede Datei einfügt, und das funktioniert wunderbar, aber das Hinzufügen des Dateinamens bereitet mir einige Probleme. Hier ist der Code:

for file in *.txt
do
  ed -s $file < <(printf '%s\n' 1i "Wavelength" . wq)   
done

Ich habe es mit diesen Zeilen versucht, wobei der geänderte Abschnitt fett gedruckt ist:

  • -ed -s $file < <(printf '%s\n' 1i "Wellenlänge"&& $Datei.wq)
  • -ed -s $file < <(printf '%s\n' 1i "Wellenlänge"&& printf $datei.wq)
  • -ed -s $file < <(printf '%s\n' 1i "Wellenlänge"&& echo $datei.wq)

Wie mache ich das? Muss ich den Dateinamen als Variable speichern und die Variable drucken? Oder kann ich einen Modifikator verwenden, um den Dateinamen in eine Zeichenfolge umzuwandeln?

Bitte lassen Sie mich wissen, wenn Ihnen etwas einfällt. Vielen Dank im Voraus

Antwort1

Wie wäre es mit Folgendem:

for file in *.txt
do
  ed -s $file < <(printf '%s\n' 1i "Wavelength $file" . wq)
done

Übrigens, was machen das ".wq" und das "1i"? Das habe ich noch nie gesehen...

verwandte Informationen