bash - вывод эха на терминал

Я не настолько продвинут в сценарии bash, поэтому подозреваю, что это может быть что-то очень простое. Я создал сценарий для запуска URL-адреса с помощью curl , затем проанализировал вывод с помощью grep для некоторых идентификаторов перед добавлением его в текстовый файл. Добавляя его в текстовый файл, идентификаторы разделяются пробелами, поэтому я попытался заменить пробелы на новые строки следующим образом:

#!/bin/bash

IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")

echo ${IDS} >> "ids"
sed 's/ /\n/g' "ids"

Но когда я запускаю это, я вижу, что вывод моего файла записывается в терминал, если я удалю последняя строка ( sed ), вывод исчезает. Раньше я использовал tr , и происходило то же самое. Как мне этого избежать?

0
26.02.2017, 01:08
2 ответа

sed печатает файл с заменой, которую вы ему сказали.

Я думаю, что лучшей идеей может быть следующее:

#!/bin/bash

IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")

echo "$IDS" | tr ' ' '\n' >> "ids"

Это будет выводить $ IDS и применять пробел к переводу новой строки перед добавлением в файл.

0
28.01.2020, 04:48

Попробуйте с perl

IDS=$(curl -sv http://example.com |& perl -lne 'print $1 if /data-user_id="(\d+)"/')
0
28.01.2020, 04:48

Теги

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