Проблема с оболочкой Bash, странное поведение при вводе данных пользователем

Во-первых, нет причин, по которым grepнельзя это сделать. Да, и обратите внимание, что catвам не нужен, как grep, так и awkмогут принимать имена входных файлов:

$ grep -xB2 'create table "sacro".issue' file
{ unload file name = issue00106.unl number of rows = 74 }

create table "sacro".issue

Итак, если вам нужна только первая строка, сделайте:

$ grep -xB2 'create table "sacro".issue' file | head -n1
{ unload file name = issue00106.unl number of rows = 74 }

-xозначает «совпадение со всей строкой», что гарантирует, что строка create table "sacro".issue_categoryне будет напечатана. -B2означает «распечатать также 2 предыдущие строки».


Вы также можете сделать это в awkпо запросу:

$ awk -vs='create table "sacro".issue' '($0==s){print b2}{b2=b1; b1=$0}' file 
{ unload file name = issue00106.unl number of rows = 74 }
0
16.09.2019, 01:37
1 ответ

Что заставляет вас думать, что $@будет хранить что-либо после того, как вы используете readдля чтения в cur? Поскольку вы снова читаете его в цикле, результат зависит от того, с какими аргументами вы запускаете этот скрипт, поскольку это то, что означает $@.

0
28.01.2020, 03:17

Теги

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