我正在开发一个从bash文件中提取注释并将它们输出到新文件的程序。
我需要忽略被''或“”引用所包含的#,我认为我已经正确地做了。
grep -oe "[^\'\"\\]#[^\'\"].*" somefile >> somecomments
这会提取一些文字之前的评论,例如
echo Sum: $Sum # Displays the sum
将在输出文件中转换为“#显示总和”。 问题是以#开头的行现在因某种原因被排除在外。例如。
# Name
# Date
根本不会出现在输出文件中。
如何修复我的表达式,以便我仍然可以在#前面排除引号,但是要提取以#开头的行?
答案 0 :(得分:0)
检查以下内容是否适用:
grep -oe "[^\'\"\\]#[^\'\"].*" -e "^#.*" somefile >> somecomments
但正如其中一条评论所说,你将不得不处理许多例外情况。
如果有像
这样的陈述怎么办? echo '<space> ########### Following code does this #########<space>'
你必须记住所有这些机会。