3

Я всегда использую awk для манипулирования файлами, разделенными запятыми, поэтому первая строка в моем коде всегда меняет разделитель полей на "," примерно так:

awk 'BEGIN {FS=","}
$2 < 20 {print $1}' myfile.csv

Можно ли изменить значения по умолчанию в awk, чтобы запятая была стандартной FS? Это не большая проблема, но это просто сделает вещи немного аккуратнее. Я попробовал поискать в Google, но не нашел ничего полезного; может быть, это невозможно, но я подумал, что спросить!

2 ответа2

4

Чтобы изменить разделитель полей по умолчанию в awk, используйте опцию -F <fs> (fs - простой символ или регулярное выражение).

Вы также можете изменить эту fs с помощью внутренней переменной FS awk.

1

РЕДАКТИРОВАТЬ: В общем, как было отмечено в комментариях, безопасный способ использовать псевдоним - это использовать другое имя, например, awkc

Создайте псевдоним, который задает полевому разделителю запятую. Поместите псевдоним в ~/.bashrc или, если ~/.bashrc sources (включает в себя) ~/.bash_aliases , поместите его туда. Впоследствии вы можете переопределить его снова в своей команде, чтобы вам понравилось,

Имейте в виду, что если вы используете «awk» в качестве имени своего псевдонима, ваш сценарий не является переносимым. Он будет правильно работать только в системе с таким псевдонимом.

alias awkc='awk -F","'

Пример (с использованием псевдонима)

echo "a,b c" | awkc '{print $1" -- "$2}'  

Выход

a -- b c

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .