Используя GNU awk, вы можете определять поля по их шаблону, используя FPAT
(см. здесь ).Вы заявляете:
Строки должны быть разделены на отдельные строки после двух символов , и новая строка должна // добавляться в начале.
Ваш вывод, однако, предполагает два буквенных символа .Шаблон, который вам нужен:
FPAT=""[^[:alpha:]]*[[:alpha:]][^[:alpha:]]*[[:alpha:]]?"
Он ищет не более одного или двух буквенных символов, которые могут предшествовать или чередоваться с неалфавитными символами.(не закончено):
MEANDER_XY -> ME\n//AN\n//DE\n//R_X\n//Y
MEANDERS_XY -> ME\n//AN\n//DE\n//RS\n//_XY
Итак, следующий awk поможет:
awk 'BEGIN{FPAT=""[^[:alpha:]]*[[:alpha:]][^[:alpha:]]*[[:alpha:]]?"; OFS="\n//"}{$1=$1}1'
Используя POSIX awk, вы можете сделать более расширенную версию, которая всегда будет работать:
awk 'BEGIN{regex=""[^[:alpha:]]*[[:alpha:]][^[:alpha:]]*[[:alpha:]]"; OFS="\n//"}
{ s=$0
while(match(s,regex)) {
printf substr(s,RSTART,RLENGTH) (length(s)==RLENGTH ? "": OFS)
s=substr(s,RLENGTH+1)
}
print s
}'