LINUX.ORG.RU
ФорумAdmin

Перевод части скрипта в цикл

 


0

2

Есть вывод json , я хочу к каждой строке по номеру добавить определенный текст. Это выглядит следующим образом

wget -cq http://ссылка -O - | jq '.time, .data, .sent, .error' |

sed '1s/^/Текст1: /' |
sed '2s/^/Текст2: /' |
sed '3s/^/Текст3: /' |
sed '4s/^/Текст4: /' |
и тд
Всё работает, проблем нет
Но я понимаю что добавлять sed каждый раз это геморно, так как там будет еще куча строк Хочу добавить это в цикл, что бы он брал текст из файла. Сделал вот так

wget -cq http://ссылка -O - | jq '.time, .data, .sent, .error' |

while read y
do
sed '2s/^/&y: /'
done < mycontent.txt

Но тут появились проблемки. 1) while затирает вывод, а мне нужно что бы он добавлял к ней. Я понимаю что это так не работает как у меня) 2) надо сделать так что бы менялось число у sed '2s, предполагаю что это можно сделать вот таким образом

i=1
while read y
do
sed '$is/^/&y: /'
i=i+1
done < mycontent.txt
Если со вторым пунктом более менее понятно, то как решить первую проблему?) Как сделать что бы это всё заработало?)

Перемещено hobbit из general

Если я верно понял проблемы, 1 - перенаправление вывода за рамками цикла; 2 - если все равно будет формироваться файл с заменами - может лучше сразу сделать его в виде sed-скрипта, а не лепить потом циклы на bash'e?

YAR ★★★★★
()
Ответ на: комментарий от YAR

может лучше сразу сделать его в виде sed-скрипта

можно так, можно организовать цикл средствами самого sed и использовать команду R (если это GNU sed), но в данном конкретном случае проще

paste -d ' ' mycontent.txt -

а не лепить потом циклы на bash'e

вот это точно.

ABW ★★★★★
()

На другом языке сделать не вариант? На Ruby том же будет куда проще, чем на баше.

yu-boot ★★★★★
()

может, лучше взять какой-нибудь более продвинутый скриптовый язык, типа Python?..

yet_another_angry
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.