我有一个简短的文本文件,我应该使用特殊模式在其中输出数据。我的文件:
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'
此行的作用
- 使用以下方法将内容
test
从多行更改为一行tr '\n' '_'
- 只获取部分,其中和
test1
在另一个后面test2
test3
grep -o '[0-9]*\stest1_[0-9]*\stest2_[0-9]*\stest3'
- 使用以下方法从一行返回到多行
tr '_' '\n'