Чтение CSV-файла с использованием while IFS=, но без обработки запятой в качестве разделителя, если поле заключено в кавычки

Во-первых, автодополнение Bash -просто читает то, что вы вводите в командной строке, не разрешая псевдонимы. Если вы поместите имя команды, то он читает имя команды. Если вы ставите псевдоним, то он читает псевдоним. Итак, что касается завершения, gvне имеет ничего общего с gvimв вашем случае. На самом деле, gv— это имя, определенное в сценарии bash -завершения как:

_install_xspec '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview
complete -F _filedir_xspec gv

Таким образом, в основном он соответствует только несжатым и сжатым файлам ps и pdf.

Насколько я знаю, у вас есть 2 способа справиться с этим:

  1. Установите альтернативное завершение для gvна другую функцию. Например, _longoptработает в вашем случае:

    complete -F _longopt gv
    
  2. Напишите общую функцию завершения псевдонима и используйте ее в gv. К счастью, кто-то сделал это за вас:https://github.com/cykerway/complete-alias

0
22.06.2021, 04:10
1 ответ

С GNU awk для FPAT:

$ cat tst.awk
BEGIN { FPAT="[^,]*|\"[^\"]*\"" }
{
    print
    for (i=1; i<=NF; i++) {
        print "\t" i, "<" $i ">"
    }
    print "---"
}

$ awk -f tst.awk file
Apple,10,12,...
        1 <Apple>
        2 <10>
        3 <12>
        4 <...>
---
Banana,5,10,...
        1 <Banana>
        2 <5>
        3 <10>
        4 <...>
---
"Banana, green",3,14,...
        1 <"Banana, green">
        2 <3>
        3 <14>
        4 <...>
---
2
28.07.2021, 11:23

Теги

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