Извлечение строк, содержащих слово в указанном поле текстового файла - PullRequest
0 голосов
/ 28 октября 2019

У меня проблемы с извлечением данных из текста файла, я покажу вам пример.

Вот как форматируется текстовый файл:

John England A
Kyle Canada P 
Ash France P
Alex Italy C
Simon Germany C
Thomas Netherlands P

Теперьчто мне нужно сделать, это после сортировки их в алфавитном порядке в поле 1, затем выбрать только те, которые имеют определенное третье поле, например P, и поместить их в другой файл .txt.

Это будетправильный вывод нового файла:

Ash
Kyle
Thomas

, как вы можете видеть, они отсортированы в алфавитном порядке, и в новый файл вставляются только те, у которых значение третьего поля в качестве P равно.

Вот к чему я пришел:

cut -d ' ' -f1 file1.txt | sort

, который в основном просто выбирает первое поле и сортирует его по алфавиту, что я просто не могу решить, что делать, чтобы выбрать только те, которые имеютP в качестве третьего значения поля (без изменения только что созданного заказа).

Спасибо всем, кто поможет.

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Вот один с grep 'n' cut 'n' sort, который проверяет, заканчивается ли строка в P:

$ grep "P$" file | cut -d \  -f 1 | sort
Ash
Kyle
Thomas

Если вы хотите, чтобы P in3-е поле, используйте:

$ grep "^[^ ]\+ [^ ]\+ P$" file | cut -d \ -f 1 | sort
0 голосов
/ 28 октября 2019

Вы можете использовать awk для этого:

awk '$3=="P"{print $1}' file1.txt | sort > file2.txt

Или с grep:

grep ' P$' file1.txt | sort
...