Выравнивание данных для импорта в базу данных

Небольшое улучшение :сделать space, V, enterвместо 0, space, $, enter. Одиночный V набрать намного проще, чем 0 и $ . V эквивалентно команде vim «выбрать визуальный режим для всей строки».

Я не могу напрямую обращаться к byobu, но, поскольку он просто работает с tmux, вы также можете привязать ключ ко всему этому в родном tmux. Примерно так:

bind-key -r -T copy-mode-vi Y send-keys -X begin-selection \; send-keys -X select-line \; send-keys -X copy-selection

Затем вы просто входите в режим копирования, переходите к строке, которую хотите скопировать, нажимаете Y , затем Enter . Строка теперь будет в буфере вставки. (Хотя это немного длинно и некрасиво, но мне это подходит.)

Редактировать:Протестировано с tmux 2.4

0
08.08.2019, 17:04
2 ответа
$ awk -F '|' 'BEGIN { OFS=FS } { split($3, a, ","); $3 = a[1]; $4 = a[2]; print }' file
122|abc |ds|we       ||wrqg
145|dw  |ett|335     ||nxd
166|rotl|qqqp|eoepepe||ge
776|gge |022         |||pp
039|pot |011a        |||lot

Что я здесь делаю, так это то, что разделяю 3-е поле запятыми. Это назначает биты разделения -в массиве aкак отдельные элементы массива. Затем я устанавливаю 3-е поле на первый бит, а 4-е поле на второй бит(a[1]и a[2]соответственно ).

Это предполагает, что 3-е исходное поле всегда содержит только одну запятую (или вообще не содержит запятой ). Если он содержит более одной запятой, вы потеряете все данные, идущие после второй запятой.

2
28.01.2020, 02:29

У меня другой подход: я говорю awkиспользовать в качестве разделителя |или ,и решаю, что печатать, сколько полей присутствует в этой строке:

awk -F '[|,]' '
    BEGIN {OFS="|"}
    NF==6 {print $1,$2,$3,$4,$5,$6}
    NF==7 {print $1,$2,$3,$4,$6,$7}
' <(tr -d ' ' < file)

Выход:

122|abc|ds|we||wrqg
145|dw|ett|335||nxd
166|rotl|qqqp|eoepepe||ge
776|gge|022|||pp
039|pot|011a|||lot

Поскольку я действительно не использую пробелы в вашем вводе -и выводе, я просто удалил их все...

0
28.01.2020, 02:29

Теги

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