【问题标题】:How to copy lines between two strings to a new text file matching first string fully and second string partially如何将两个字符串之间的行复制到完全匹配第一个字符串和部分匹配第二个字符串的新文本文件
【发布时间】:2014-02-04 15:44:14
【问题描述】:

这就是我的文件 input.txt 的样子

$cat input.txt

*NODE_SET
a
b
c
d
*NODE
e
f
g
h
*XYZ

现在我想输出 NODE 之间的行,直到它遇到包含“”的另一行到新文件“output.txt”。 即 output.txt 应该包含:

*NODE
e
f
g
h
*XYZ

这里的问题是 *XYZ 可以是任何未知字符串;即它可以是 *ELEMENT、*LOAD 等,但星号存在于行首。

【问题讨论】:

  • 你必须这样做一次还是重复?这对答案有很大影响。

标签: bash


【解决方案1】:

这个 sed 应该可以工作:

sed -n '/^\*NODE$/,/^*/p' input.txt > output.txt

输出:

*NODE
e
f
g
h
*XYZ

【讨论】:

  • 如果我只想要 *NODE e f g h 怎么办
  • 不客气。对于*NODE e f g h,您可以使用:sed -n '/^*NODE e f g h/,/^*/p'
  • 忽略我之前的评论。我的意思是如果我不想在输出中出现 *XYZ 怎么办。
  • 那么你需要:sed -n '/^*NODE$/,/^*/{$d;p;}'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多