Frage Wie füge ich ein Zeichen wie # zum Anfang der ersten nicht leeren Zeile für mehrere Dateien hinzu?


Ich habe eine Reihe von Dateien, die ich # verwenden möchte, um die erste nicht leere Zeile zu kommentieren, die Dateien sind nicht in gutem Format, so dass es 1 oder mehrere leere Zeilen vor der Zeile geben kann, die ich kommentieren möchte. Irgendwie kann ich es tun? Vielen Dank!

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


0
2018-01-18 02:35


Ursprung




Antworten:


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

Wenn "p" == 0 erscheint und eine Zeile mit einem Leerzeichen erscheint, fügen Sie einen Hash hinzu und setzen Sie p = 1. Drucke jede Zeile.


2
2018-01-18 03:53





Verwenden 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

0
2018-01-20 00:01





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

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

0
2018-01-22 17:01