将部分复制到新文件中

use*_*418 3 bash awk sed

我有一个文本文件,

!--- Marker one --!
aaaa
bbbb
cccc
dddd
!--- Marker two --!
eeee
ffff
!--- Marker three --!
gggg
hhhh
iiii
Run Code Online (Sandbox Code Playgroud)


我需要使用Bash将标记2(直到标记2的结尾)复制到新文件中.

!--- Marker two --!
eeee
ffff
Run Code Online (Sandbox Code Playgroud)

成为一个单独的文件.

gho*_*g74 8

AWK

$ awk '/Marker two/{f=1;print;next}f&&/Marker/{exit}f' file
!--- Marker two --!
eeee
ffff
Run Code Online (Sandbox Code Playgroud)

庆典

#!/bin/bash

flag=0
while read -r line
do
  case "$line" in
     *"Marker two"*)
         flag=1; echo $line;continue
  esac
  case "$flag $line" in
   "1 "*"Marker"* ) exit;;
   "1"* ) echo $line;;
  esac
done <"file"
Run Code Online (Sandbox Code Playgroud)

SED

$ sed  -n '/Marker two/,/Marker three/{/Marker three/!p}' file
!--- Marker two --!
eeee
ffff
Run Code Online (Sandbox Code Playgroud)