замена точки в строке, но отъезд последнего

замените "." [точки], но оставьте последнюю: например: .txt [там мог быть случайным числом точек в строке, даже обнулить, мне просто нужен последний]

$ повторяют 'someth.ing.something.txt' | SOMEMAGIC
someth-ing-something.txt
$

1
задан 17.01.2011, 17:50

4 ответа

Дайте этому попытку:

echo 'someth.ing.something.txt' | sed 's/\(.*\)\.\([^.]*\)$/\1\n\2/;s/\./-/g;s/\n/./g'
2
ответ дан 12.12.2019, 10:36
#!/bin/bash

F=$1
tail=${F#*.}
head=${F%.*}
removed_dots=$(echo $head| tr "." "-")
mv -iv $1 "$removed_dots.$tail"
1
ответ дан 12.12.2019, 10:36

Попробуйте:

echo 'someth.ing.something.txt' | sed 's/\./-/g;s/\(.*\)-\([^-]*\)$/\1.\2/'
0
ответ дан 12.12.2019, 10:36

Я уверен, что существует лучший (regex) путь, но Вы могли записать сценарий (python/perl), который берет чтения от stdin и находит последнюю точку, разделяет его на имя файла + расширение, и затем замените все точки тире в имени файла.

В конце связывают его и выкладывают его снова.

0
ответ дан 12.12.2019, 10:36

Теги

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