Search code examples
linuxperlunixawknawk

Selecting surrounding lines around the missing sequence numbers


I have one file inside that file it is present as given below

TEST_4002_sample11_1_20110531.TXT
TEST_4002_sample11_2_20110531.TXT
TEST_4002_sample11_4_20110531.TXT
TEST_4002_sample11_5_20110531.TXT
TEST_4002_sample11_6_20110531.TXT
TEST_4002_sample10_1_20110531.TXT
TEST_4002_sample10_2_20110531.TXT
TEST_4002_sample10_4_20110531.TXT
TEST_4002_sample10_5_20110531.TXT

I want the output if the 4th filed of that file sequence is missing, then print previous file name and next file name as output.

TEST_4002_sample11_2_20110531.TXT
TEST_4002_sample11_4_20110531.TXT
TEST_4002_sample10_2_20110531.TXT
TEST_4002_sample10_4_20110531.TXT

Solution

  • This awk variant seems to produce the required output:

    awk -F_ '$4>c+1{print p"\n"$0}{p=$0;c=$4}'