Удалить последние символы строк в текстовом файле

Один вкладыш, как заказывали:)

URL_1переменная используется для удобства чтения. Это не обязательно.

#!/bin/bash

URL_1=http://www.squid-cache.org/Versions/

curl "$URL_1" | 
grep -Pzo '(?s)Stable Versions.*?langpack' | 
sed -rn '$,$s_.*"(.*)">.*(.*).*_\1squid-\2.tar.gz_p' | 
xargs -I{} wget "${URL_1}"{}
  1. grep -Pzo '(?s)Stable Versions.*?langpack'
    • -PИнтерпретируйте шаблон как регулярное выражение, совместимое с Perl -.
    • -zопция, необходимая для многострочного поиска.
    • -oпечатать только совпадающие (не -пустые )части совпадающей строки.
    • (?s)Включено «точка соответствует новой строке» для остальной части регулярного выражения. Информация:Встроенные модификаторы .
    • .*?нежадное сопоставление.
  2. sed -rn '$,$s_.*"(.*)">.*(.*).*_\1squid-\2.tar.gz_p'
    • построить эту часть здесь:v3/3.5/squid-3.5.26.tar.gz
    • $,$обрабатывать только последнюю строку.
    • Я использую подчеркивание вместо косой черты для команды замены sиз-за косых черт в тегах и .Пример:s_foo_bar_вместоs/foo/bar/
  3. xargs -I{} wget "${URL_1}"{}
    • передать две конкатенированные части в wgetс помощьюxargs:http://www.squid-cache.org/Versions/и v3/3.5/squid-3.5.26.tar.gz.

РЕДАКТИРОВАТЬ -версия без xargs (здесь это не нужно):

#!/bin/bash

URL_1=http://www.squid-cache.org/Versions/

wget "${URL_1}$(curl "$URL_1" |
grep -Pzo '(?s)Stable Versions.*?langpack' |
sed -rn '$,$s_.*"(.*)">.*(.*).*_\1squid-\2.tar.gz_p')"

1
27.06.2019, 16:56
2 ответа

Вероятно, не рекомендуется создавать этот файл с помощью ls, но, учитывая предоставленный вами образец ввода, вы можете использовать

awk:

awk '{sub(/.gz$/, ""); print}' TempsModel.txt > TempsModel2.txt

sed:

sed 's/.gz$//' TempsModel.txt > TempsModel2.txt

Чтобы создать исходный файл без расширения.gz, вы можете сделать:

for file in /media/Elise/2811226E69F71131/ModelOutput/*; do echo "${file%.gz}"; done > TempsModel.txt

Вы также можете:

set -- /media/Elise/2811226E69F71131/ModelOutput/*
printf '%s\n' "${@%.gz}" > TempsModel.txt
4
27.01.2020, 23:14

Если доступен zsh, то аналогично этому Используя расширение параметра для создания списка аргументов для mkdir -p, вы можете использовать квалификатор glob для удаления суффикса на лету:

setopt histsubstpattern extendedglob

print -rl -- /media/Elise/2811226E69F71131/ModelOutput/*.gz(#q:s/%.gz/) > TempsModel2.txt
2
27.01.2020, 23:14

Теги

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