Удалить последнюю цифру из строки

Существует утилита, которая будет искать информацию о пользователе независимо от того, хранится ли эта информация в локальных файлах, таких как / etc / passwd , или в LDAP, или каким-либо другим способом. Он называется getent .

Чтобы получить информацию о пользователе, вы запускаете getent passwd $ USER . Вы получите строку следующего вида:

[jenny@sameen ~]$ getent passwd jenny
jenny:*:1001:1001:Jenny Dybedahl:/home/jenny:/usr/local/bin/bash

Теперь вы можете просто вырезать из нее домашний каталог, например используя cut, например:

[jenny@sameen ~]$ getent passwd jenny | cut -d: -f6
/home/jenny
0
22.04.2019, 12:31
3 ответа

Это удаляет последний символ, если это число.

sed 's|[0-9]$| |g' file

Выход:

SCDE
SF
STR1D
SREDF2
FRED
STER2R
0
28.01.2020, 02:23

Соответствует ли это вашим критериям?

Ввод данных:

cat user324294
SCDE1
SF9
STR1D2
SREDF21
FRED
STER2R4

И преобразование:

sed 's/[0-9]$//' user324294 
SCDE
SF
STR1D
SREDF2
FRED
STER2R

Объяснение регулярного выражения :любая цифра, за которой следует конец строки, ничем не заменяется.

3
28.01.2020, 02:23

Вам нужно регулярное выражение (Регулярное выражение )для соответствия вашему тексту.
Регулярное выражение, которое соответствует одному числу , равно [0-9]. Конец строки — $.
Оба вместе:

 [0-9]$

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

 sed 's/[0-9]$//' test.txt

Если вам нужно заменить несколько цифр, используйте модификатор повторения, возможно, в данном случае *. Не то, что вы спрашиваете, но полезно знать:

 sed 's/[0-9]*$//' test.txt
0
28.01.2020, 02:23

Теги

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