это возможно с помощью grep, но awk предназначен для таких задач.
awk 'BEGIN{FS="\t"}; {if ( NF == 26 ) print $0}' infile > outfile
У awk есть множество встроенных переменных, FS = FieldSeperator, вы можете установить это значение на любое значение, но здесь '\t '- это константа на языке C, представляющая символ табуляции.'|'(труба) символ также популярен.
BEGIN { ... code ... }
- это блок кода, который выполняется перед обработкой.Последний бит - это код внутри не-BEGIN-блока, то есть { if ( NF ... }
- это действие, которое выполняется для каждой читаемой строки.
NF = Number (of) Fields.Таким образом, вы можете легко фильтровать по количеству полей в файле.
NR = Количество (из) записей.
Также обратите внимание, что для grep
или awk
нет необходимостииспользуйте cat file | ...
, обе утилиты читают любые файлы, переданные в командной строке, т.е. grep .... file1 file2 ... filen
Надеюсь, это поможет.
PS какВы, кажется, являетесь новым пользователем, если вы получаете ответ, который помогает вам, пожалуйста, помните, чтобы пометить его как принятый и / или дать ему + (или -) как полезный ответ.