Файл с разделителем подмножества по подмножеству одного столбца

#linux #unix #awk

#linux #unix #awk

Вопрос:

У меня есть текстовый файл (назовите его infile.txt ), где столбцы имеют заголовки и разделены точками с запятой. Его подмножество воспроизводится ниже:

 SCHCD;  SCHNAME
13110208001;    GOVT MIDSCHOOL 
10110208002;    GOVT HIGHSCHOOL 
21110208101;    MATRIC
21110208102;    UPPER SECONDARY
13110208201;    SECONDARY
 

Мне нужно подмножество файла, в котором первые два символа «SCHCD» равны «13». Итак, мое подмножество (назовите его outfile.txt ) должно выглядеть так:

 SCHCD;  SCHNAME
13110208001;    GOVT MIDSCHOOL 
13110208201;    SECONDARY
 

Ответ №1:

С awk :

 awk ' NR == 1 || /^13/ ' infile.txt > outfile.txt
 

Комментарии:

1. Большое спасибо, Уэс. Работал отлично. Что, если бы «13» было во втором столбце, а не в самом начале?

2. @user702432: awk ' NR == 1 || $2 ~ /^13/ ' infile.txt > outfile.txt

3. Да, я знаю. Если я правильно понимаю, ваш код обрабатывает infile.txt как плоский файл без каких-либо требований к разделению (что идеально подходит для моей нынешней проблемы). Я имею в виду, что, если бы мне пришлось вводить подстроку во 2-й столбец? Просто пытаюсь увеличить свою собственную базу знаний. Спасибо.

4. @user702432: awk -F; ' NR == 1 || $2 ~ /^13/ ' infile.txt > outfile.txt — Теперь исправлено. Для первого столбца нам не нужно учитывать разделитель.