I have an file as shown
ford
speed ....
hyundai
speed ...
ferrari
speed ....
BMW
Merc
lambo
speed ...
I want to search for "speed" in every alternate line staring from 2nd, and if not found i want to append "speed\n". i.e. i want my output to be
ford
speed ....
hyundai
speed ...
ferrari
speed ....
BMW
speed
Merc
speed
lambo
speed ...
Is there any oneliner that can be used for the above problem like the one used to append to each line like
perl -ple 's/^/speed/' filename
I'd stick with perl -pe
in this case, however we have to output extra "speed" line when both:
So... ($odd = (number of lines printed so far) % 2)
perl -pe 'next if ($odd ^= 1 or /^\s*speed/); print "speed\n"; $odd ^= 1; '
UPDATE: Due to how -n/-p works, the last line in file was not processed correctly. So I added an END block for that. "If we stopped at odd line, append speed".
perl -ple 'chomp; next if ($odd ^= 1 or /^speed/); print "speed"; $odd ^= 1; END { print "speed" if $odd }'
Though it's a line-and-a-halfer and not one-liner now =)