Добавить последовательные числа к определенной строке в текстовом файле (попарно одно и то же число)

Возможно, вам следует взглянуть на официальный документ SUSE

Другим полезным источником информации является справочная страница аудитда , в которой говорится, что все конкретные конфигурации файлов находятся в/etc/audit/audit.rules

1
19.09.2019, 18:19
4 ответа
$ awk -F '"' 'BEGIN { OFS=FS; n=1 } { $2 = sprintf("%s%d", $2, ++n/2); print }' file
id="picture-1"
id="picture-1"
id="picture-2"
id="picture-2"

Здесь мы рассматриваем каждую строку как набор"-полей с разделителями. Второе поле изменяется с помощью awkпутем добавления целого числа в его конец. Целое число увеличивается на единицу для каждой строки, но также делится на два. В результате число в выводе будет увеличиваться на единицу каждую вторую строку (из-за округления, когда число используется с форматом %dвsprintf()).

0
27.01.2020, 23:40

Я бы использовал цикл for.

Предположения:

  • Вы знаете максимальное количество записей для создания.
  • Префикс является постоянным.
  • Ваш вывод — это просто "номер с префиксом -".
#!/bin/sh

# Define constants
prefix="picture-"
max_count=30

# For/Next style loop
for i in ((i=1;i<=$max_count;i++))
do
    echo "${prefix}${i}"
end
0
27.01.2020, 23:40

Небольшая переделка вашего perlодного -вкладыша:

perl -mPOSIX -pe 's/picture\-/$&. POSIX::ceil(++$n\/2)/ge' index.txt

Добавленное число теперь составляет половину -n, округленное в большую сторону, поэтому результат увеличивается только через каждую вторую строку.

0
27.01.2020, 23:40

Всегда можно сделать:

perl -pe 's/picture-\K/1+($n++>>1)/ge' index.txt

Для создания данных с нуля:

seq -f 'id="picture-%.0f"' 10 | sed p
1
27.01.2020, 23:40

Теги

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