
たくさんのファイルがあり、# を使用して最初の非空白行をコメントにしたいのですが、ファイルの形式が正しくないため、コメントしたい行の前に 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....