предпочтения разделителя awk

Я думаю, что этот код должен сделать то, что Вы хотите:

#!/bin/bash

unset username
unset password
echo -n "username:"
read username
prompt="password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
    if [[ $char == $'\0' ]]
    then
         break
    fi
    prompt='*'
    password+="$char"
done
4
12.11.2013, 10:41
3 ответа

Вероятно, самый легкий путь состоял бы в том, чтобы использовать псевдоним оболочки (добавьте его к ~/.bashrc или эквивалент Вашей оболочки):

alias awktab="awk -v FS='\t' -v OFS='\t' -v ORS='\t'"
1
27.01.2020, 20:58

Вы могли также добавить ярлык на него. Например, чтобы иметь Ctrl+G вставляют awk -v FS='\t' -v OFS='\t' -v ORS='\t' в Ваш терминал добавьте эту строку к Вашему ~/.inputrc:

Control-G: "awk -v FS='\t' -v OFS='\t' -v ORS='\t'"

Затем откройте новый терминал, введите Ctrl+G и престо!

1
27.01.2020, 20:58

Так как POSIX определяет, каковы значения по умолчанию специальных переменных, простая опция состоит в том, чтобы переопределить их во времени выполнения (не - простая опция быть для изменения источника).

В случае gawk можно поместить общий код (обычно в BEGIN {} блоки) в файле библиотеки. Если Вы помещаете их в путь к библиотеке по умолчанию (вероятно, /usr/share/awk/ или /usr/local/share/awk), или где переменная среды AWKPATH точки к, Вы не должны использовать полный путь:

gawk -f tabfile.awk [...]

В отличие от другого awks, gawk позволяет нескольким -f опции, и позволяют Вам смешивать обоих -f и источник программы на командной строке.

Последние версии поддерживают дополнительное -i включайте опцию файла (так как таращат глаза 4.1.0), и @include директива (начиная с 4.0.x AFAICT). Это - немного больше устойчивой и дружественной версии -f:

gawk '@include "tabfile"; /foo/ { ... }'

Вышеупомянутое будет включать tabfile.awk от AWKPATH или путь к библиотеке по умолчанию. @include поддерживался в течение долгого времени, но через igawk обертка сценария оболочки к gawk, это - функция простофили, надлежащей теперь.

Это совместимо с другими двумя прекрасными ответами, например:

alias awktab="gawk -i tabfile"

Существует одно тонкое другое между использованием этого подхода файла библиотеки и использованием -v на командной строке: параметр командной строки вступает в силу, прежде чем любой код awk выполняется, таким образом, они установлены к тому времени, когда код библиотеки выполняется. Это может иметь значение, использует ли код библиотеки такие переменные (например, чтение файлов данных).

1
27.01.2020, 20:58

Теги

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