Вы можете сделать это следующим образом:
awk 'BEGIN {NUM=0}; /xml version="1.0"/ {NUM++; filename=NUM "Output.xml"; print filename}; {print ^> filename}' Inputfile.xml
Но у вас есть проблема в вашем коде, лучше замените на это:
awk 'BEGIN {NUM=0; filename=NUM "Output.xml";}; /xml version="1.0"/ {NUM++; filename=NUM "Output.xml"; } {print ^> filename }' Inputfile.xml
filename
не инициализируется докод соответствует первой строке xml version="1.0"
, выдает ошибку.
Так что лучше инициализировать его в блоке BEGIN
.
Или просто:
awk 'BEGIN {NUM=0} /xml version="1.0"/ {NUM++} {print ^> NUM "Output.xml"}' Inputfile.xml
В противном случае в вашем коде требуется только >
, что означает добавление ^
перед ним в cmd
.
Через мойгоды, используя awk
в пакетном файле или под cmd
, я постепенно предпочитаю использовать одинарные кавычки вне кода awk и отмечать, что эти символы должны быть экранированы.- Символам в паре двойных кавычек не нужно убегать, другим нужны.
Другой вариант, во много раз лучший, состоит в том, чтобы сохранить код в файле, например xcode1.awk
, и использовать переключатель -f
, например awk -f xcode1.awk Inputfile.xml
, для его вызова.