
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....