Удалите последний знак, одним словом, но только если символ там - в ударе

Windows может только смонтировать варианты FAT и NTFS исходно. Несобственные файловые системы существуют, но требуют прохождения через обручей до такой степени, что часто более просто установить Linux (или FreeBSD) VM. Так, выберите FAT32 или NTFS.

Драйвер NTFS-3g FUSE доступен на FreeBSD как порт (fusefs-ntfs), как связанные утилиты (ntfsprogs).

11
16.08.2012, 01:26
3 ответа

Просто необходимо выйти из точки в Вашем sed команда и все будут прекрасны. Как это:

sed 's/\.$//'

Поскольку в случае Вы не выходите из него, .$ будет соответствовать к любому символу в конце строки.

Также можно поместить все Ваш sed + grep + cut во всего один sed:

sed 's=/[^/]*$==;s/\.$//' filename
12
27.01.2020, 19:58
  • 1
    Большой, спасибо, работы!:) Я использую словарь с по 300k строкам, таким образом, это - то, почему я использую grep "\". получить только слова с точкой там. –  removelastdotonlyifitsthere 15.08.2012, 10:27
  • 2
    sed также может сделать это с чем-то как это: sed -n '/\./{s=/[^/]*$==;s/\.$//;p}. Так или иначе grep + sed будет работать намного дольше, чем всего один sed. –  rush 15.08.2012, 10:33
  • 3
    Если бы это может быть сделано с одним sed, это было бы хорошо все же. Как применить Вашу последнюю команду sed? –  removelastdotonlyifitsthere 15.08.2012, 10:36
  • 4
    sed 's/[./]\+[^./]*$//' –  Peter.O 15.08.2012, 10:36
  • 5
    Спасибо теперь, которое я не должен сокращать, но grep, все еще там. sed эквивалент моей переданной по каналу команды grep затем удалил бы grep к, если бы это возможно, это было бы хорошо. "Также можно ли поместить весь sed + grep +, сокращение во всего один sed" не работает на меня, печатает все слова? –  removelastdotonlyifitsthere 15.08.2012, 10:41

Просто немного измените регулярное выражение :, чтобы избежать .И не надоgrep

cat filename | cut -d"/" -f1 | sed 's/\.$//'
0
27.01.2020, 19:58

Удаление символа только если он есть как раз и есть описание раскрытия параметров.

 $ var=path.
 $ echo "$var    ${var%.}"
 path.    path

В этом случае точка не является специальной (точка является специальной в регулярном выражении ).

Другой шаблон можно удалить с помощью%/*:

 $ var=openOffice.org/ozm
 $ echo "${var%/*}"
 openOffice.org

Для удаления обоих:

 $ var=roonstr./ozm
 $ var=${var%/*}
 $ var=${var%.}
 $ echo "$var"
 roonstr

Конечно, для работы с исходным файлом быстрее использовать sed для файла.
Только не забудьте поставить точку (в кавычки, чтобы она соответствовала буквально, иначе это означает :любой символ ).

 $ sed 's,/.*,,;s,\.$,,' file
3
27.01.2020, 19:58

Теги

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