我试图提取包含某个字符串的行,该行也包含在它之前的4行(只是第四行而不是中间的行)。现在我可以接电话了。
grep -n "my string" myfile.out > output.txt
我也可以得到前面的代码行,但前面的所有四行代码都不具体。
grep "my string" -B 4 myfile.out > output.txt
让我们来看这个例子:
! CREEK
FLUX 6739, 6670, 6640, 6672, 6582, 6583, 6548, 6576, 6570 &
656565
***
*** THE SUM OF SPECIFIED: -1.192451
*** THE AVERAGE: -6.2760599E-02
*** THE MAXIMUM: 0.000000
*** THE MINIMUM: -0.4294980
*** THE SUM OF POSITIVE: 0.000000
*** THE SUM OF NEGATIVE: -1.192451
我想要这个输出:
! CREEK
*** THE SUM OF SPECIFIED: -1.192451
我将不胜感激Windows批处理文件解决方案或PowerShell。
最佳答案
这是tac + awk
解决方案:
tac file |
awk '/THE SUM OF SPECIFIED/{p=NR; print} p && NR==p+4{print; p=0}' |
tac
! CREEK
*** THE SUM OF SPECIFIED: -1.192451
另外,这里是
grep + awk
解决方案:grep "THE SUM OF SPECIFIED" -B 4 file | awk 'NR==1 || NR ==5'
关于bash - 如何基于某些字符串提取一行和之前的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438690/