Entfernen Sie einen Tabulator e am Ende einer Zeile

Entfernen Sie einen Tabulator e am Ende einer Zeile
printf "%s\t" HEMES n{1..1600} >file_a
sed -i 's/\t*$//' file_a > file_a

entfernt einen Tabulator, der am Ende der Zeile nach der ersten Zeile des Codes entsteht (wo das Zeug gedruckt wird).

Mein Problem ist nun, dass ich in einer größeren Datei mit mehr Zeilen den Tabulator hinter dieser Zeile (beginnend mit HEMES) entfernen müsste. Wenn ich nur die sed-Zeile ausprobiere, funktioniert das nicht. Die Zeile, aus der ich das Zeichen entfernen möchte, ist immer die erste Zeile der Datei.

Antwort1

Anstatt alles in einer Zeile zu machen und in eine Datei auszugeben, teilen Sie es in zwei Teile auf – geben Sie die HEMES-Zeichenfolge aus und hängen Sie dann die Sequenz n{1...1600} an: printf "%s" HEMES > file_a; printf "%s\t" n{1..1600} >> file_a.

Wenn Sie speziell diesen Tab zwischen HEMES und n1 in einer bereits vorhandenen Datei entfernen müssen, gibt es hier eine awkLösung:

awk ' {sub(/[[:blank:]]/,""); print} ' file_a > tmp_file && cat tmp_file > file_a.

Dabei wird die Subfunktion übernommen, die denErsteVorkommen des Tabs geben wir diesen Text in eine temporäre Datei aus und nehmen diesen Inhalt dann zurück in file_a. Der Grund für das Wechseln zwischen Dateien ist folgender: Sofern Sie keine awk-Version verwenden, die Inline-Bearbeitung ermöglicht (gnu awk, glaube ich), funktioniert dies in jedem Fall – awk, mawk, nawk usw.

verwandte Informationen