awk '/ABC/ { print $NF }' test.txt
Это будет использовать awk
для сопоставления строки ABC
с содержимым каждой строки. Если строка совпадает, выводится последнее слово, разделенное пробелом -.
Если вы хотите сопоставить первое поле в строке, используйте $1 ~ /Abc/
, а не /ABC/
. Если вы хотите выполнить сравнение строк с первым полем, используйте $1 == "Abc"
.
Чтобы передать сравниваемую строку в командной строке, используйте, например,.
awk -v str="Abc" '$1 == str { print $NF }' test.txt
Чтобы передать шаблон, с которым вы сравниваете, в командной строке, используйте, например,.
awk -v pat="ABC" '$1 ~ pat { print $NF }' test.txt
Измените $1
на $0
для сравнения со всей строкой.
Используя свой собственный подход с grep
и предполагая, что вы не знаете суффикс имени файла (, если это так ), используя GNUgrep
:
grep -o '\<ABC\.\w*\>' test.txt
\<
соответствует началу слова, а \>
соответствует концу.
Это даст вам два ABC.txt
, так как оно встречается дважды в первой строке.
С реализацией grep
не -GNU вы должны использовать [_[:alnum:]]
вместо\w
(это будет работать и в GNU grep
).
Ваша проблема в два -раза:
Со своим
export PATH=/opt/aseprite/build/bin
вы не добавили папку в PATH
, а перезаписали ее. Следовательно, ваш bash не может найти какие-либо исполняемые файлы за пределами /opt/aseprite/build/bin
(, если вы не вызовете их с абсолютным путем ).
Вместо этого вам следует
export PATH="$PATH":/opt/aseprite/build/bin
Это добавит новый путь к существующему содержимому переменной.
Однако и, что более важно,:
Если вы используете zsh
, то файл .bashrc
не подходит для использования в настройках оболочки. Эти две оболочки довольно сильно различаются тем, как они обрабатывают настройки среды и какой синтаксис использовать, поэтому вы можете не получить ожидаемых результатов, даже если синтаксис правильный для bash
. Ошибки, которые вы показываете, демонстрируют, как zsh
не может применитьbash
-определенные команды и настройки, которые, вероятно, работали бы нормально, если бы вы получили файл из bash
(, в частности, shopt
является встроенной командой bash
. который zsh
не может знать ).
Вместо этого посмотрите на этот вопрос о том, как добавить пути к zsh
.
К счастью, поскольку вы используете только sourced
.bashrc
, неправильные настройки вступят в силу только в том терминале, где вы выполнили эту команду,и открытие новой консоли даст вам новый старт (, так как zsh
не читает автоматически ваш неправильно измененный.bashrc
).