20161220 20:30:01 MODE 1 TEST 1 SOURCE 1 SET 1
20161220 20:30:02 MODE 1 TEST 2 SOURCE 1 SET 1
20161220 20:30:02 MODE 1 TEST 3 SOURCE 1 SET 1
20161220 20:30:02 MODE 1 TEST 1 SOURCE 2 SET 1
20161220 20:30:04 MODE 1 TEST 1 SOURCE 1 SET 1 MODE 1 TEST 2 SOURCE 2 SET 1
20161220 20:30:02 MODE 2 TEST 2 SOURCE 1 SET 1
20161220 20:30:06 MODE 1 TEST 1 SOURCE 1 SET 1 MODE 2 TEST 2 SOURCE 2 SET 1
To get lines with more than one MODE I do this:
$ sed -n '/MODE.*MODE/p' aa
20161220 20:30:04 MODE 1 TEST 1 SOURCE 1 SET 1 MODE 1 TEST 2 SOURCE 2 SET 1
20161220 20:30:06 MODE 1 TEST 1 SOURCE 1 SET 1 MODE 2 TEST 2 SOURCE 2 SET 1
Now I need to get only lines with single occurrence of MODE. Before I start writing an awk counting these MODE keywords, is there a "proper" way with just a regular expression?
Thanks everybody, I found the awk-based solution checking on NF==2 as the most appropriate. This is because I oversimplified the sample I posted, actual data has records with three and more sets and I don't have perl available in this environment.