Небольшое улучшение :сделать 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
$ 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-е исходное поле всегда содержит только одну запятую (или вообще не содержит запятой ). Если он содержит более одной запятой, вы потеряете все данные, идущие после второй запятой.
У меня другой подход: я говорю 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
Поскольку я действительно не использую пробелы в вашем вводе -и выводе, я просто удалил их все...