bash - 将一个部分复制到一个新文件中

标签 bash sed awk

我有一个文本文件,

!--- Marker one --!
aaaa
bbbb
cccc
dddd
!--- Marker two --!
eeee
ffff
!--- Marker three --!
gggg
hhhh
iiii


我需要使用 Bash 从标记二(直到标记二的末尾)复制到一个新文件中。

!--- Marker two --!
eeee
ffff

成为一个单独的文件。

最佳答案

$ awk '/Marker two/{f=1;print;next}f&&/Marker/{exit}f' file
!--- Marker two --!
eeee
ffff

庆典

#!/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"

种子

$ sed  -n '/Marker two/,/Marker three/{/Marker three/!p}' file
!--- Marker two --!
eeee
ffff

关于bash - 将一个部分复制到一个新文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393423/

相关文章:

linux - 使用Python subprocess.call调用bash脚本和参数失败

linux - 测试 - linux 命令

awk - 如何使用awk对十六进制数进行计算?

shell - 在不包含字符串的文件中查找行并在其开头添加文本

linux - 传递文件名并运行的shell脚本

bash - sed 或 awk 删除具有匹配正则表达式的行和以下行

linux - Bash:将键值行转换为 CSV 格式

linux - 如何在linux中获取服务数组

regex - Bash如何在模式之后找到模式

ruby - 如果行不是以 KEYWORD 开头,则删除换行符