Вы можете попробовать этот awk:
awk '$1=="m.o."{if(l){exit};l++;next}l&&l<3{l++;next}l{if($3<0&&$2!=1)c++}END{print c}' infile
grep '#' input.txt
эта команда будет искать текст в файле, в этом случае #будет искаться в файле input.txt и все вхождения будут напечатаны на экране
то вы использовали знак вертикальной черты, что означает не печатать вывод и передать вывод следующей команде, написанной после знака вертикальной черты |
так
tail -n
это неверно, так как хвосту -n нужно какое-то число, чтобы он напечатал количество строк, которое вы указали с номером снизу, т.е. хвост -n 2 он напечатает последние 2 строки
возьмем этот пример, у меня есть файл с именем input.txt со следующим содержимым, записанным в нем:
[root@localhost student]# cat input.txt
# this is a new line comment 1
this is not a comment line 1
this is not a comment line 2
# this is a new line comment 2
# this is a new line comment 3
# this is a new line comment 4
# this is a new line comment 5
# this is a new line comment 6
# this is a new line comment 7
# this is a new line comment 8
# this is a new line comment 9
# this is a new line comment 10
this is not a comment line 3
this is not a comment line 4
this is not a comment line 5
если вы запустите команду
[root@localhost student]# grep '#' input.txt | tail -n 2
# this is a new line comment 9
# this is a new line comment 10
он искал символ в файле и, возможно, нашел 10 строк, затем мы дополнительно отфильтровали его и напечатали последние 2 строки из этого результата, написав хвост -n 2
Надеюсь, теперь тебе все ясно,