我有一个包含多行的日志文件作为示例。
日志文件中的一个示例可能是:
-BEG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-END DET
所需的输出应为:
BEG DET OMITTED
话虽如此,我需要将标签“ -BEG DET”和“ -END DET”中的所有文本替换为无引号,并用一个唯一的替换所有块,包括所提及的标签。行:BEG DET OGETTED。
请注意,标签之间的行数是可变的。
谢谢。
答案 0 :(得分:2)
$ cat file
foo
-BEG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-SOME TEXT RANDOM REFERING TO REG DET
-END DET
bar
$ awk '/-BEG DET/{print $0, "OMITTED"; f=1} !f{print} /-END DET/{f=0}' file
foo
-BEG DET OMITTED
bar
答案 1 :(得分:1)
使用sed的一种方法:
sed -e '/^-BEG/!b' -e ':a' -e'N;/\n-END/!ba' -e 's/\n.*/ OMITTED/;s/-//' filename