Исключить разделитель с помощью csplit

Я использую рабочую конфигурацию:

# Yank to copy text with y.
bind-key -t vi-copy y copy-pipe "tmux save-buffer - | xclip -sel clipboard -i"

# Update default binding of `Enter` to also copy with this method.
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "tmux save-buffer - | xclip -sel clipboard -i"

# Toggle rectangular copy mode.
bind-key -t vi-copy 'C-v' rectangle-toggle

# Bind ']' to paste.
bind ] run "tmux set-buffer \"$(xclip -o -sel clipboard)\" && tmux paste-buffer"

# Toggle rectangular copy mode.
bind-key -t vi-copy 'C-v' rectangle-toggle

# http://askubuntu.com/a/507215/413683
set -g set-clipboard off
6
05.05.2016, 22:33
3 ответа

Если вы можете обойтись соответствием строки, а не совпадением регулярного выражения

awk 'BEGIN {RS="---\n"; ORS=""} {print > sprintf("xx%02d", NR)}' in

С GNU awk (по крайней мере, в v4.0.1) это можно использовать регулярное выражение для RS , например

gawk 'BEGIN {RS="-+\n"; ORS=""} {print > sprintf("xx%02d", NR)}' in
2
27.01.2020, 20:25

Поскольку вы, похоже, используете gnu csplit , это довольно просто:

csplit --suppress-matched infile /PATTERN/ '{*}'

т.е. используйте - suppress-matched , чтобы подавить строки, соответствующие PATTERN .


Согласно вашему примечанию, этот параметр доступен только в более поздних версиях csplit ( coreutils ≥ 8,22)

6
27.01.2020, 20:25
perl -ne 'BEGIN { $fnum=0; open $fh, ">", sprintf "xx%02d", $fnum++ } if (m/-/) { open $fh, ">", sprintf "xx%02d", $fnum++ } else { print $fh $_ }' inputfileorfileshere

Или аналогичную строку reopen-into-new-file-on-matching-Соответствующая через awk или что-то еще.

2
27.01.2020, 20:25

Теги

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