Как изменить разделитель с запятой -на разделитель с запятой -двоеточием, но не менять запятые между кавычками?

Prefix+ w запускает choose-tree -Zw. Из tmux (1):

choose-tree [-GNswZ ] [-F format ] [-f filter ] [-O sort-order ] [-t target-pane ] [template ]

Put a pane into tree mode, where a session, window or pane may be chosen interactively from a list. -s starts with sessions collapsed and -w with windows collapsed. -Z zooms the pane.

Так что с настройками по умолчанию окна уже свернуты (т.е. вы не можете видеть отдельные панели в исходном виде ).

Если вы хотите, чтобы первоначальный вид был еще больше свернут, вы можете повторно связать его, используя -s, чтобы каждый сеанс получал только одну строку.

bind-key 'w' choose-tree -Zs

Флаг -Zпоявился в tmux 2.7. Если вы используете версию 2.6, привязка была просто choose-tree -w, поэтому вам следует изменить ее на choose-tree -s.

0
08.12.2020, 20:32
3 ответа

Вы можете использовать awkс двойной кавычкой в ​​качестве разделителя полей и заменить ,на ;только для нечетных полей (1,3,5 и т. д. ).

awk 'BEGIN{OFS=FS="\""} {for (i=1;i<=NF;i=i+2) gsub(/,/,";",$i)}1' file

Здесь сделаны некоторые предположения, например, что изначально в полях нет ;, нет встроенных/экранированных "внутри двойных кавычек, но ввод простой, как в примере.

Для работы в более сложных случаях GNU awk предоставляетFPATрешение для CSV-файлов, которое эффективно в большинстве случаев, исключая такие случаи, как перевод строки в поля. Если этот cvs нельзя считать таким же простым, как в примере, то требуется программа, использующая библиотеку для разбора cvs.

0
18.03.2021, 22:44

How can I change from comma-delimited to semi-colon delimited but don't change the commas that are in between quotes?

Вы можете использовать csvtool. Он уже упакован для многих дистрибутивов. Обработка формата csv с помощью регулярных выражений может быть сложной и подверженной ошибкам.

$  csvtool -t ','   -u ';' col 1-  input.csv > output.csv
1
18.03.2021, 22:44

С GNU awk для FPAT:

$ awk -v FPAT='[^,]*|"[^"]+"' -v OFS=';' '{$1=$1}1' file
123;456;"ABC,DEF"

Если вам нужно больше, см.https://stackoverflow.com/questions/45420535/whats-the-most-robust-way-to-efficiently-parse-csv-using-awk

0
18.03.2021, 22:44

Теги

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