如何在多个文件的第一个非空行的开头添加类似 # 的字符?

如何在多个文件的第一个非空行的开头添加类似 # 的字符?

我有一堆文件,我想用 # 注释第一个非空白行,但文件格式不太好,所以在我想要注释的行之前可能有 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

使用 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

答案3

这可能对你有用(GNU sed):

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

相关内容