Как это?
sort -V -k2 -k3 source.txt* |
awk '/Lat:/ { gsub(/;/, ""); print $6, $8 }
/WiFiAdapterAndroid/'
Обратите внимание также, как sort
может читать список файлов без помощи cat
.
cut
здесь не подходит, потому что это не может решить, какие строки изменить; это все или ничего. И наоборот, grep
не может изменять извлекаемые строки. Таким образом, Awk предоставляет простую и компактную нотацию для выполнения обеих задач.
Вкратце, Awk выполняет сценарий для каждой строки ввода за раз (или, в более широком смысле, для записи; ее легко настроить для работы) на единицах, которые также являются частями линий или наборов смежных линий). Каждый блок сценария состоит из условия и действия; оба они являются необязательными, поэтому действие без условия соответствует всем строкам безоговорочно, а условие без действия по умолчанию печатает ввод, для которого выполняется условие.
В первой строке скрипта есть условие регулярного выражения который выбирает строки, которые соответствуют регулярному выражению Lat:
; действие очищает строку простой подстановкой, чтобы удалить любые точки с запятой, а затем печатает шестой и восьмой токены в строке. (Каждая запись разбита на поля; опять же, здесь есть большая гибкость, но по умолчанию каждое поле является токеном без пробелов, отделенным пробелом от смежных токенов.) И, наконец, как вы можете догадаться, второе условие другое регулярное выражение, которое приводит к печати соответствующих входных данных.