У меня есть куча файлов, которые я хотел бы использовать #, чтобы прокомментировать первую непустую строку, файлы не в хорошем формате, поэтому перед строкой, которую я хочу комментировать, может быть 1 или несколько пустых строк. Как я могу это сделать? Спасибо!

В качестве примера:

File1:

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

File2:

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

Надеюсь, я четко сформулировал вопросы. :)

3 ответа3

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

когда "p" == 0 и появляется строка с непробельным символом, добавьте хеш и установите p = 1. Напечатайте каждую строку.

0

Использование sed в качестве OP требуется.

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

Тестовый файл

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

результат

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

Это может работать для вас (GNU sed):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .