Wie fügt man bei mehreren Dateien am Anfang der ersten nicht leeren Zeile ein Zeichen wie # hinzu?

Wie fügt man bei mehreren Dateien am Anfang der ersten nicht leeren Zeile ein Zeichen wie # hinzu?

Ich habe eine Reihe von Dateien, bei denen ich # verwenden möchte, um die erste nicht leere Zeile zu kommentieren. Die Dateien haben kein gutes Format, daher kann es sein, dass vor der Zeile, die ich kommentieren möchte, eine oder mehrere leere Zeilen stehen. Kann ich das irgendwie machen? Danke!

Als Beispiel:

Datei1:

<blank Line>
this is line 1, and I want to comment.
This is line 2...

Datei2:

<blank line>
<blank line>
This is line 1, and I want to comment.
This is line 2...

Ich hoffe, ich habe die Fragen klar formuliert. :)

Antwort1

echo -e '\n  \nfoo\nbar' | awk '!p && /[^[:blank:]]/ {$0 = "#" $0; p=1} 1'
<empty>
<space><space>      
#foo
bar

Wenn „p“ == 0 ist und eine Zeile mit einem Zeichen erscheint, das kein Leerzeichen ist, fügen Sie ein Hash hinzu und setzen Sie p=1. Drucken Sie jede Zeile.

Antwort2

Verwendung von sed als OP erforderlich.

sed ':loop;$!{N; b loop};s/^[ \t\n]*/&#/' file

Testdatei

<empty>
<space><space>    
<tab><tab>  
foo
bar

Ergebnis

<empty>
<space><space>    
<tab><tab>  
#foo
bar

Antwort3

Dies könnte für Sie funktionieren (GNU sed):

sed -i '/^\s*$/,/\S/{/\S/s/^/#/}' file1 file2 file....

verwandte Informationen