複数のファイルの最初の非空白行の先頭に # のような文字を追加するにはどうすればよいですか?

複数のファイルの最初の非空白行の先頭に # のような文字を追加するにはどうすればよいですか?

たくさんのファイルがあり、# を使用して最初の非空白行をコメントにしたいのですが、ファイルの形式が正しくないため、コメントしたい行の前に 1 行または複数の空白行がある可能性があります。何か方法はありますか? よろしくお願いします!

例:

ファイル1:

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

ファイル2:

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

質問を明確に述べられたことを願っています。:)

答え1

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

「p」== 0 で、スペース以外の文字を含む行が表示された場合は、ハッシュを追加して p=1 を設定します。すべての行を出力します。

答え2

OP の要件として sed を使用します。

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

テストファイル

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

結果

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

答え3

これはうまくいくかもしれません (GNU sed):

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

関連情報