我有许多如下所示的日志文件:
/*
header
arbitrary number of lines
*/
blah blah
blah blah
使用简单的 Bash 命令(最好是 sed,而不是 awk),我如何仅检索标题行(最好包括注释标记)?
我读了手册,也尝试用谷歌搜索,也发现一些提示,但还不足以让我开始。
谢谢!
答案1
如果您确认以下事项,此答案中的脚本将适合您。
/*
文件以“ ”字符 开头- 可能存在未嵌套的多行 C-Syntex 注释块
- 注释块以同一行上没有其他 C 语句结束
sed -n '/^\/\*/,/\*\// p' 文件.c #- - - - -
这将匹配从文件开头到注释块结尾的所有行。
第二行(#
开头带有“ ”)突出显示正在搜索的匹配项。开头的
“ ”和结尾的“ ”告诉 sed 仅打印匹配的部分。-n
p
答案2
这将查看每个扩展名为 .log 的文件,如果第一行仅为“/*”,则打印所有内容,直到仅包含“*/”的行。
for file in *.log; do
head -n1 $file | grep -q '^/*' &&
sed '/^\*\/$/q' $file;
done
答案3
cat *.log | sed -e 's/*\/\*//g' -e 's/\*\///g' >> smt.log
或许就是这样