我有一个文本文件,其内容是这样的(“ ...”表示“更多文本”):
input file path/to/file1.txt
...
...
result ....
...
input file path/to/file2.txt
...
...
result ....
...
input file path/to/file3.txt
...
...
result ....
...
我想过滤从input file
和result
开始的行,并保持原始的出现顺序。
编辑:但是input file
是输入文件的绝对路径...所以我想过滤该部分,但只获取路径的最后一部分(我是指文件名本身)
期望的结果应该是:
input file file1.txt
result ....
input file file2.txt
result ....
input file file3.txt
result ....
我该怎么做?
答案 0 :(得分:2)
$ grep -E '^(input file|result)' inputFile > outFile
$ cat outFile
input file ...
result ....
input file ...
result ....
input file ...
result ....
如果要过滤掉没有这些行的行,请使用-v
选项。
$ grep -Ev '^(input file|result)' inputFIle
...
...
...
...
...
...
...
...
...
如果path/to
是所有file*.txt
的固定路径,则可以使用此sed
命令来打印所需的结果
$ sed -e 's|path/to/||g' -nE -e '/^(input|result)/p' inputFile
input file file1.txt
result ....
input file file2.txt
result ....
input file file3.txt
result ....