У меня есть много файлов журнала, которые похожи на это:
/*
header
arbitrary number of lines
*/
blah blah
blah blah
Используя простые команды Bash (предпочтительно sed, не awk), как я получил бы только строки заголовка (идеально включая маркеры комментария)?
Я имею прочитайте руководство и пытался гуглить, также нашел некоторые подсказки, но недостаточно запустить меня.
Спасибо!
Если Вы подтвердите следующие вещи, то сценарий в этом ответе будет работать на Вас.
/*
"символы sed -n '/^\/\*/,/\*\// p' file.c # - - - - -
Это будет соответствовать всем строкам от запуска файла к концу блока комментария.
Вторая строка (с"#
"в запуске), выделяет разыскиваемое соответствие.
"-n
"в запуске и"p
"в конце говорят sed печатать только часть соответствия.
Этот взгляд на каждый файл с расширением .log и если первая строка "/*" только, распечатайте все до строки с "* /" только.
for file in *.log; do
head -n1 $file | grep -q '^/*' &&
sed '/^\*\/$/q' $file;
done
cat *.log | sed -e 's/*\/\*//g' -e 's/\*\///g' >> smt.log
Это могло бы быть этим
Richard
команда после первого соответствия! Так, Вы получите все комментарии, запускающиеся в новых строках (требование 1 не ограничено запуском файла) в файле. – nik 06.09.2009, 19:54sed -n '/^\/*/,/*\// p' $LOGFILE | sed -e '/*\//q'
и пропуститеcat
. Но, я еще не доволен этим. – nik 06.09.2009, 20:32