Я сделал простой сценарий удара, которые упаковывают файл и затем загружают его, если все прекрасно, я получаю некоторые ссылки http:// на свой материал, как произведено, я хочу знать, как я могу скопировать те ссылки автоматически на файл или Переменную? Также я получаю некоторые строки, которые не запускаются с http://, но с #, например, как я могу удалить их и добавить пустые строки в этом месте?
Для получения вывода сценария в файл используйте:
script.sh >file.txt
Удалить комментарии (строки, запускающиеся с #
) но оставьте пробел в их месте, используйте:
script.sh | sed 's/^#.*//' >file.txt
Чтобы сделать все вышеупомянутое, также отображая информацию о терминале, используйте:
script.sh | sed 's/^#.*//' | tee file.txt
>
символ оболочки для перенаправления. Это говорит оболочке брать то независимо от того, что шло в stdout и перенаправление в именованный файл вместо этого.
sed
линию за линией утилита редактирования. Здесь мы используем sed
замените командой, которая похожа s/old/new/
где old
любое регулярное выражение. В нашем случае, old
^#.*
где ^
соответствия в начале строки, #
соответствует символу хеша, и .*
подстановочный знак должен соответствовать чему-нибудь, что следует. В нашем случае, new
пусто. Таким образом, sed 's/^#.*//'
строки замен, которые начинаются #
с пустой строкой.
tee
утилита, используемая для создания копии stdout. tee file.txt
возьмет то, что это находит на stdin, и (a) сохраняют его в файл file.txt
в то время как одновременно (b) отправляют его в stdout. Если хотят добавить к file.txt
вместо перезаписи это мы можем использовать tee -a file.txt
где -a
опция говорит tee
добавлять.
Поместить содержание first.txt
в начале file.txt
:
{ cat first.txt; script.sh; } >file.txt
Для выбора строк согласно некоторому шаблону, не изменяя их, grep
правильный инструмент:
script.sh | grep '^http' >file.txt
sed
позволяет выбирать диапазон строк. Здесь, мы используем диапазон /^http/,$
где /^http/
первая строка, с которой встречаются, который запускается с http
и $
символ sed для последней строки во входе. p
говорит sed
для печати строк, которые соответствуют тому диапазону:
script.sh | sed -n '/^http/,$ p'
{ cat first.txt; script.sh; } | sed -n '/^http/,$ p' >file.txt
http
Здесь мы используем sed
снова. Когда мы находим строку, которая запускается с http
, мы добавляем новую строку \n
в конец той строки:
script.sh | sed 's/^http.*/&\n/'