Единственнымgrep
-решением является
grep gis aaa | grep -o '^[^"]*"[^"]*"' | grep -o '"[^"]*"$'
Первый grep
такой же, как у вас в вопросе. Очевидно, он выбирает строки, содержащиеgis
(в любом месте строки ). Второй grep,
grep -o '^[^"]*"[^"]*"'
соответствует всему, начиная с (, включая ). первая строка в кавычках в строке (, т. е. столбцы с 1 по 4 ), и из-за опции-o
выводит только этих слов. Третий grep,
grep -o '"[^"]*"$'
соответствует последнему слову строки в кавычках в строке (, что на данный момент является столбцом 4 исходной строки )и выводит только эту строку.
П.С. Если в вашем файле есть одна вкладка между каждой парой столбцов, и значения не содержат табуляции, простой способ получить четвертый столбец —
awk -F'\t' '/gis/ { print $4 }' aaa
shopt -u progcomp
отключает программируемое завершение , т.е. скрипты, которые могут предоставлять, например. за -завершение программы. Они могут предоставлять такие функции, как завершение только файлов, которые соответствуют *.tar
или тому подобное, когда командная строка начинается с tar
и т. д. Эти сценарии обычно поставляются с вашим дистрибутивом или нет, в случае Mac.
Можно отключить progcomp
, если ошибки и неправильные функции, вызванные этими сценариями, кажутся более раздражающими, чем фактические функции полезны (и для меня это примерно в 100 % случаев ).