вирізати рядок на останньому роздільнику


14

У мене є ім’я файлу на зразок a.b.c.txt, я хочу, щоб цей рядок розділився як

string1=a.b.c
string2=txt

В основному я хочу розділити ім'я файлу та його розширення. Я використовував, cutале він розпадається як a,b,cі txt. Я хочу перерізати рядок на останньому роздільнику.

Може хтось допоможе?

Відповіді:


25
 #For Filename
 echo "a.b.c.txt" | rev | cut -d"." -f2-  | rev
 #For extension
 echo "a.b.c.txt" | rev | cut -d"." -f1  | rev

Краса коду!
Нам Г ВУ

15

Для цього існує багато інструментів.

Як ви використовували cut:

$ string1="$(cut -d. -f1-3 <<<'a.b.c.txt')"
$ string2="$(cut -d. -f4 <<<'a.b.c.txt')"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt

Я б використав розширення параметрів (якщо оболонка його підтримує):

$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt

1
рішення баш елегантне.
törzsmókus

вирізати один робить тільки роботу з фіксованим числом періодів!
törzsmókus

0
echo "a.b.c.txt" | cut -d. -f1-3

cutКоманда буде розмежувати .і дасть вам 4 факторів ( a, b, c, txt). Над командою надрукується коефіцієнт від 1 до 3 (включено).

Або:

echo "a.b.c.txt" | cut -d -f-3

Над командою надрукується коефіцієнт від 1 до 3 (включено).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.