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

Нет, это не поддерживается wget, если только вы уже не выполнили синхронизацию один раз, через wget или нет (, в этом случае см.--timestamp).

Вот некоторые обходные пути, которые вы можете попробовать:

  • Если файлы содержат даты в имени или пути, а не только во времени модификации файла, вы можете использовать регулярные выражения/каталоги для исключения старых файлов.
  • Используйте что-то отличное от wget. Это кажется хорошим кандидатом для специального сценария. Вы все еще можете использовать wget для файла за раз. Вы также можете проверить wpull, который я не использовал, но я понимаю, что он похож на wget со сценариями, чтобы определить, следует ли загружать страницы.
  • Если у вас есть опция загрузки HTTP в дополнение к FTP, вы можете отправлять пользовательские заголовки директив HTTP-кэша, которые загружают файл только в том случае, если он был изменен после определенной даты.
0
13.08.2017, 15:30
3 ответа

Используя awk, вы можете иметь все в отдельном определяющем разделителе как_

VAR1=$(awk -F'_' '{print $1}' infile.txt) 

Вы можете напечатать нужные поля на основе их индекса выше вместо $1, который указывает на первое поле.

Или вы можете использовать bashи читать как массив.

IFS='_' read -r -a array <<< "$myString"

затем просто прочитайте с индивидуальным порядковым номером:

echo "${array[2]}"

Или даже просто вы можете использовать расширение параметра bash:

VAR1="${myString%_*}"   # will gives you 'a_link_list' 
VAR2="${myString##*_}"  # will gives you 'java' 
VAR3="${VAR1%_*}"       # will gives you 'a_link' 
0
28.01.2020, 02:33

Сsed:

var1=$(sed 's/_[^_]*$//' file)
var2=$(sed 's/.*_//' file)

Обратите внимание, что sedочень жадный, поэтому во втором случае glob *поглощает все символы, включая предыдущие символы подчеркивания _.

Выход:

$ echo "$var1"
a_link_list
$ echo "$var2"
java
0
28.01.2020, 02:33

Расширения параметров оболочки могут сделать это:

$ v="a_link_list_java"
$ printf "%s\n" "${v%_*}" "${v##*_}"
a_link_list
java

Обратите внимание, что если шаблоны в расширении не совпадают, ничего не удаляется. Таким образом, значение без подчеркивания не изменится при обоих преобразованиях :

.
$ v=foo
$ printf "%s\n" "${v%_*}" "${v##*_}"
foo
foo
2
28.01.2020, 02:33

Теги

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