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