Почему $COLUMNS не перечислен или ENV или установлен? (на zsh)

Если общее количество строк неизвестно[12193]пояснение [12194]awk 'FNR == NR{t=NR+1; next}[12195]FNR variable[11861] --> Номер текущей строки в текущем файле[12196]NR variable[11863]--> Общее количество просмотренных строк[12197]Условие [11864]FNR == NR[11865] может быть истинно только в том случае, если awk считывает первый файл аргумента[12198]t=NR+1[11867] -- > переменная [11868]t[11869] содержит дополнительный счетчик строк [11870]+1[11871], так как она необходима в нашем текущем контексте[12199]next[11873]--> Останавливает обработку текущей входной записи и переходит к следующей входной записи[12200]mult+=$2*(t-FNR)[11875] --> переменная [11876]mult[11877] содержит некоторый из [11878](5*(t-FNR) + . .... + 4*1 + 3*2 + 2*4 + 1*3)[12201]sum+=$2[11881] --> переменная [11882]sum[11883] содержит сумму столбца 2[12202]END[11885]--> После прочтения всего входного текста[12203]print mult/sum[11889] --> наконец-то будет выполнено правило END[11887] file{, }[11891] --> Вы также можете создать [11892]-файл[11893], но я использовал ярлык, который вы можете сказать, попробуйте [11894]-эхо-файл{,}[11895] и [11896]-эхо-файл{,,}[11897] на вашем терминале. [12205]Good Luck[12206]Akshay.
1
10.12.2014, 20:46
2 ответа

Если бы я должен был догадаться, я бы подозреваю IFS . SET списки IFS тоже. А для меня IFS IFS (пространство, горизонтальная вкладка, новая линия и нуль):

$ printf "%s" "$IFS" | od -a
0000000  sp  ht  nl nul
0000004

Наличие символа Nul ( \ 0 ) вызывает GREP Для лечения его в качестве двоичного файла, поэтому в зависимости от вашего GREP , вы можете увидеть:

$ set | grep COLUMNS        
Binary file (standard input) matches

Вы можете принудительно GREP для лечения входа в текст:

-a, --text
    Process a binary file as if it were text; this is equivalent 
    to the --binary-files=text option.

и так:

$ set | grep COLUMNS --text
COLUMNS=239
3
27.01.2020, 23:13

набор | Столбцы GREP должны отображать «двоичные файлы (стандартные входные) совпадения» (с GNU GREP). Муру правильно идентифицировал виновник: при ZSH, IFS содержит нулевый байт в дополнение к стандартным символам пространства, вкладке, новой строке.

запустить набор | GREP -Text Columns Чтобы Grep игнорируют его наклон, чтобы пропустить двоичные файлы.

Установите не является портативным, надежным способом для списка параметров в данный момент, потому что его выход неоднозначен во многих оболочках (вы не можете отличить новую часть, которая является частью переменного значения из новой строки. который разделяет переменные). Выход набора в ZSH происходит, чтобы цитироваться, чтобы быть однозначным, но трудно разобраться: GREP может еще вернуть ложные срабатывания. Чтобы перечислить все параметры в ZSH, перечисляйте клавиши параметров массива :

print -rl ${(ko)parameters}
4
27.01.2020, 23:13

Теги

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