Попробуйте следующий код:
function happy ()
{
mood="i am $1 happy"
echo "$mood"
}
happy "very"
Или попробуйте вариант ниже,
function happy ()
{
echo "i am $1 happy"
}
happy "very"
Хотя вы утверждаете awk
, что это невозможно -для полноты картины:
awk -F',' '$9>=1' input.csv
Это даст указание awk
рассматривать ,
как разделитель полей и печатать только те строки, в которых значение поля 9 равно или больше 1.
cut
не требуется, sort
может выполнить проверку поля за вас, а затем добавить компонент в регулярное выражение, чтобы пройти первые 8 полей:
sort -t"," -k9 MyFile.csv | grep -E "^([^,]*,){8}(1*[1-9][2-9]*(\.[2-9]+)?|1+\.[2-9]*[1-9][2-9]*)"
[^,]*,
означает любое количество символов запятой, отличных от -, за которыми следует запятая, тогда {8}
означает 8 повторений. Обратите внимание, что для этого требуется флаг -E
дляgrep
попробуй
grep -E "^([^,]+,){8}[1-9][0-9]*(.[1-9]+)?" MyFile.csv
где
-E
скажите grep
использовать расширенное регулярное выражение ^
начало строки [^,]+,
не совпадает с запятой, один или несколько раз, запятая ( ){8}
повторить 8 раз (включая запятую в конце)[1-9][0-9]*(.[1-9]+)?
начальная необязательная часть точки, не равная 0 Спасибо Даниэлю Юнгласу за повторение рисунка.
Использованиеcsvsql
:
Предположим, что ваш файл csv используется как:
$ cat input.csv
col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13
ABC,XYZ,RTY,CREAM,FRANCE,170019,ST REMY CREME,3035540005229,0.75,1,15,26.99,10
ABC,RDS,XSD,SPICE,NETHERLANDS,390476,THE KINGS GINGER,5010493025621,1.5,1,41,49.95,NA
ABC,RMS,DKS,TABLE WINE RED,CHILE,400176,SANTA ISABELA,63657001349,3,1,12.5,31.99,0
Этого вполне достаточно:
<input.csv csvsql --query "select * from stdin where col9 >=1 "
Вы можете изменить col9
имя столбца в заголовке CSV-файла.
Использованиеmiller
:
Пожалуйста, установите Miller для запуска команды.
mlr --csv filter '$col9 >= 1' input.csv