使用模式 Grep 一段文本

使用模式 Grep 一段文本

我有一个简短的文本文件,我应该使用特殊模式在其中输出数据。我的文件:

99 test1
88 test2
10 test3
11 test1
12 test1
13 test2
14 test3
17 test1
18 test4

一个接一个,从 test1 到 test2,再到 test3。因此...我写了命令:

sed '/test1.*\|test2.*\|test3/!d' filename

在输出中我有结果:

99 test1
88 test2
10 test3
11 test1
12 test1
13 test2
14 test3
17 test1

在这种情况下,我不需要以下几行:

11 test1

17 test1

这些行不是一行接一行的。我怎样才能得到我需要的结果?请帮帮我。谢谢你的关注。我应该得到这个结果:

99 test1
88 test2
10 test3
12 test1
13 test2
14 test3

答案1

假设您的数据位于名为的文件中test,这里有一行代码,但没有sed

cat test | tr '\n' '_' | grep -o '[0-9]*\stest1_[0-9]*\stest2_[0-9]*\stest3' | tr '_' '\n'

此行的作用

  1. 使用以下方法将内容test从多行更改为一行tr '\n' '_'
  2. 只获取部分,其中和test1在另一个后面test2test3grep -o '[0-9]*\stest1_[0-9]*\stest2_[0-9]*\stest3'
  3. 使用以下方法从一行返回到多行tr '_' '\n'

相关内容