Мне удалось заменить в файле, но инкрементное значение не подходит (добавление номера строки) с помощью команды awk, а также необходимо сделать для всех файлов xml в каталог.Найти и заменить строку инкрементным значением во всех файлах в каталоге
awk '{ sub(/ID>NA/,"ID>NA"++n); print }' file1 >file1
file.xml
:
<ID>NA</ID>
<Subject>ASDF</Subject>
...
<ID>NA</ID>
<Subject>ASDF</Subject>
...
<ID>NA</ID>
<Subject>ASDF</Subject>
...
<ID>NA</ID>
<Subject>ASDF</Subject>
Ожидаемый результат:
file1.xml
:
<ID>NA1</ID>
<Subject>ASDF</Subject>
...
<ID>NA2</ID>
<Subject>ASDF</Subject>
...
<ID>NA3</ID>
<Subject>ASDF</Subject>
...
<ID>NA4</ID>
<Subject>ASDF</Subject>
Пожалуйста, замените все строки '...' фактическими данными образца, чтобы у вас было что-то, с чем мы могли бы протестировать потенциальное решение. Вы никогда НЕ должны делать 'command file> file', так как оболочка может выполнить' 'файл' 'перед выполнением части' command file', и если это будет перезаписывать 'файл', перед' command' открывает его для чтения. Вместо этого сделайте 'командный файл> tmp && mv tmp file'. Вы говорите, что хотите добавить номер строки, но ваша команда и ожидаемый результат не делают этого, они добавляют номер экземпляра «NA» - который вы хотите? –