Вы можете использовать Vim в режиме Ex:
ex -sc '%s/\v(.*\n){2}/> &/|x' file
%
выбрать все строки
s
заменить
\ v
включить магию
x
сохранить и закрыть
split
соответствует разделению полей по умолчанию, используяFS
(или специальное регулярное выражение, если оно указано ):оно использует регулярное выражение для сопоставления разделителей полей . Если вы укажете FS=,
, то поля будут разделены разделяющими запятыми — сами запятые не окажутся в содержимом поля, они окажутся в массиве разделителей (, если указано ).
patsplit
соответствует разделению шаблона поля, которое можно использовать вместо разделения поля по умолчанию, указав значение дляFPAT
:он использует регулярное выражение для соответствия содержимому поля . Например, если вас интересуют только числа, указанные в какой-либо записи, вы можете указать FPAT="[[:digit:].]+"
или использовать patsplit
с этим регулярным выражением, чтобы сопоставить все непрерывные наборы цифр и манипулировать ими как полями.
В split
вы указываете разделитель; тогда как в patsplit
вы сопоставляете шаблон между разделителями:
$ echo 'foo,bar' | awk '{n = split($0,a,/,/); for(i=1;i<=n;i++) print a[i]}'
foo
bar
тогда как
$ echo 'foo,bar' | awk '{n = patsplit($0,a,/[^,]*/); for(i=1;i<=n;i++) print a[i]}'
foo
bar