как использовать sed для замены из последних 3 символов из строки

Да, есть, и я использую его. Просто возьмите файлы deb и установите с помощью gdebi или dpkg -i.

amd_64

amd_64

Вы можете захватить ppa также или здесь.

1
задан 18 September 2015 в 11:07

4 ответа

вы можете использовать:

's/.db$//'

, иначе вы можете использовать:

's/...$//'

, чтобы удалить последние 3 символа и

's/\.[^\.]*$//'

, чтобы удалить все после последней точки

7
ответ дан 23 May 2018 в 17:22
  • 1
    +1, nitpickery: вам не нужно избегать метасимволов в классах символов, поэтому в этом случае вы можете просто сделать 's/\.[^.]*$//' – kos 18 September 2015 в 19:05
  • 2
    @kos: большой улов. также $ теперь кажется ненужным, что я снова смотрю на него. – user 18 September 2015 в 21:09

Вы были близки, используйте синтаксис Regex $, чтобы указать конец строки, также нет необходимости в глобальном (g) модификаторе, поскольку вы пытаетесь найти только одно совпадение:

sed 's/\.db$//' file.txt

Пример:

$ sed 's/\.db$//' <<<'example.db.db.com.db'
example.db.db.com

$ sed 's/\.db$//' <<<'example.db.com.db'
example.db.com
4
ответ дан 23 May 2018 в 17:22

В sed $ совпадает с концом строки, поэтому вы можете попробовать

echo example.db.db.com.db | sed 's/\.db$//'

Обратите внимание, что я пропустил точку, чтобы соответствовать буквально, в противном случае она соответствует любому символу.

2
ответ дан 23 May 2018 в 17:22

Чтобы удалить последние три символа из строки

sed 's/.\{3\}$//'

Пример

% sed 's/.\{3\}$//' <<< "example.db.db.com.db"
example.db.db.com
2
ответ дан 23 May 2018 в 17:22

Другие вопросы по тегам:

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