Что-то не так с.bashrc

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).

-2
02.10.2020, 13:11
1 ответ

Ваша проблема в два -раза:

1. Вы перезаписали спецификацию пути

Со своим

export PATH=/opt/aseprite/build/bin

вы не добавили папку в PATH, а перезаписали ее. Следовательно, ваш bash не может найти какие-либо исполняемые файлы за пределами /opt/aseprite/build/bin(, если вы не вызовете их с абсолютным путем ).

Вместо этого вам следует

export PATH="$PATH":/opt/aseprite/build/bin

Это добавит новый путь к существующему содержимому переменной.

Однако и, что более важно,:

2. Вы использовали неправильный файл конфигурации

Если вы используете zsh, то файл .bashrcне подходит для использования в настройках оболочки. Эти две оболочки довольно сильно различаются тем, как они обрабатывают настройки среды и какой синтаксис использовать, поэтому вы можете не получить ожидаемых результатов, даже если синтаксис правильный для bash. Ошибки, которые вы показываете, демонстрируют, как zshне может применитьbash-определенные команды и настройки, которые, вероятно, работали бы нормально, если бы вы получили файл из bash(, в частности, shoptявляется встроенной командой bash. который zshне может знать ).

Вместо этого посмотрите на этот вопрос о том, как добавить пути к zsh.

К счастью, поскольку вы используете только sourced.bashrc, неправильные настройки вступят в силу только в том терминале, где вы выполнили эту команду,и открытие новой консоли даст вам новый старт (, так как zshне читает автоматически ваш неправильно измененный.bashrc).

7
18.03.2021, 23:00

Теги

Похожие вопросы