Вставка переменной в команду sed в сценарии bash

У меня есть текстовый файл, подобный этому:

Some-text
Keyword
Some-text
Some-text
Keyword
Some-text
Keyword
Keyword

Я хочу заменить каждое «Ключевое слово» на «number.extension», где число равно 1 при совпадении первого ключевого слова, 2 при совпадении второго ключевого слова и т. д. .

Я знаю, что я должен использовать цикл bash в сочетании с sed (sed 's: Keyword: Number: g'), но я не уверен, как вставить переменную для числа в этой команде sed.

Поскольку это HTML-файл, между этими «ключевыми словами» могут быть пустые строки или любой текст.

1
задан 11 March 2013 в 21:19

1 ответ

Отредактировано: вы можете использовать переменную в sed следующим образом:

count=1
extension=".jpg"
cp yourfile tempfile
for (( i=1; i<=`wc yourfile | awk '{ print $1 }'`; i++))
do

#for (( j=1; j<=`sed -n ''"$i"' p' yourfile | wc | awk '{ print $2 }'`; j++))
#do
        sed -i ''"$i"' s/[a-zA-Z0-9]*[Kk][Ee][Yy][Ww][Oo][Rr][Dd]/'"$count$extension"'/1' yourfile
        diff yourfile tempfile
        if [ $? -ne 0 ]
        then    
        count=$(expr $count + 1)
        cp yourfile tempfile
        fi  
#done
done
2
ответ дан 25 May 2018 в 00:40
  • 1
    Спасибо, но, к сожалению, он не делает то, что я делаю. Я уточнил вопрос, чтобы быть более ясным. Этот текст между ключевыми словами может отличаться. Я просто хочу заменить каждое появление моего ключевого слова растущим числом и расширением файла. Примеры файлов HTML здесь dropbox.com/s/qinykn154nhjymu/example.zip – Rafal 11 March 2013 в 21:23

Другие вопросы по тегам:

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