🐧 Как с помощью sed удалить последний символ из каждой строки на Linux

by itisgood
Мне нужно удалить последний символ из строки и переменной оболочки, например «${_ allow_ips}».
Например, каждая строка в моем файле выглядит следующим образом:
мой файл:
foo,
bar,
demo,
Мне нужно сделать вывод следующим образом:
foo
bar
demo.
Как же мне использовать sed, чтобы удалить последний символ?
Sed – это бесплатный редактор потоков с открытым исходным кодом для Linux, macOS, * BSD и Unix-подобных систем.
Он идеально подходит для удаления последнего символа и выполнения других опций для ваших файлов или переменных оболочки.

Удаляем с sed  последний символ из каждой строки

Работа с sed все довольно простая, когда дело доходит до манипулирования текстом.

Синтаксис следующий для поиска и замены текста на sed:

sed 's/search/replace/' input > output
sed -i'.BAK' 's/search/replace/' input
sed 's/search/replace/' <<<"${var}"
Например, удалите последнюю цифру (скажем, 6) из строки ввода следующим образом:
echo "this is a test6" | sed 's/.$//'
«.» (точка) обозначает любой символ в sed, а «$» обозначает конец строки.
Другими словами, «.$» означает, удалить только последний символ.
Далее мы создадим файл следующим образом, используя команду cat:
cat > demo.txt
Добавим текст следующим образом:
this is a test,
I love Unix,
I like Linux too,
Чтобы удалить последний символ «,» из demo.txt для каждой строки, используйте команду sed:
sed 's/.$//' demo.txt > output.txt
## Linux GNU/sed version syntax ##
sed -i 's/.$//' demo.txt
Проверьте это:
cat demo.txt
cat output.txt

Примечание об условном удалении последнего символа

По умолчанию команда sed, использованная до сих пор, удаляет все последние символы.

Но, скажем, вы можете ограничить удаление только цифро следующим образом:

echo "I love Pizza6" | sed 's/[0-9]$//'
echo "The best blog in Unixverse3" | sed 's/[[:digit:]]$//'
echo "I love Pizza6Times" | sed 's/[0-9]$//'

«[0-9]«/»[[: digit:]]» обозначает все цифры, такие как 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9.
Аналогично, мы можем использовать следующие команды, чтобы удалить буквы:
echo "I love donuts two times a dayz" | sed 's/[[:alpha:]]$//'
echo "I love donuts 2 times a dayZ" | sed 's/[[:upper:]]$//'

Команда Sed выражения

Классы СИМВОЛОВ
ОПИСАНИЕ
[[:alnum:]]
Буквенно-цифровые символы: ‘[[:alpha:]]’ и ‘[[:digit:]]’; в кодировке «C» и кодировке ASCII это то же самое, что и «[0-9A-Za-z]».
[[:alpha:]] Буквенные символы: ‘[[:lower:]]’ и ‘[[:upper:]]’; в кодировке “C” и кодировке ASCII это то же самое, что и “[A-Za-z]”.
[[:blank:]] Пустые символы: пробел и табуляция.
[[:cntrl:]]
Управляющие символы. В ASCII эти символы имеют восьмеричные коды от 000 до 037 и 177 (DEL). В других наборах символов это эквивалентные символы, если они есть.
[[:digit:]]
Цифры: 0 1 2 3 4 5 6 7 8 9.
[[:graph:]]
Графические символы: ‘[[:alnum:]]’ и ‘[[:punct:]]’.
[[:lower:]]
Строчные буквы; в кодировке «C» и кодировке символов ASCII это b c d e f g h i j klm n o p q r s t u v w x y z.
[[:print:]] Печатные символы: ‘[[:alnum:]]’, ‘[[:punct:]]’ и пробел.
[[:punct:]]
Знаки пунктуации; в локали ‘C’ и кодировке ASCII это! ”# $% &‘ () * +, -. /:; <=>? @ [\] ^ _ `{
[[:space:]] Символы пробела: в локали «C» это вкладка, новая строка, вертикальная табуляция, подача формы, возврат каретки и пробел.
[[:upper:]] Буквы в верхнем регистре: в кодировке «C» и кодировке ASCII это A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.
[[:xdigit:]]
Шестнадцатеричные цифры: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f.

Давайте определим переменную оболочки с именем IP следующим образом:

IP="192.168.2.25,"
printf "%s\n" $IP
Допустим, вы хотите удалить последний символ с  ‘,‘, запустите:
## Удалить последний символ из $IP ##
sed 's/,$//' <<<"${IP}"
## или ## 
echo $IP | sed 's/.$//' 
## Можно добавить больше IP разделив ',' ##
IP="192.168.2.200,$IP"
IP="192.168.5.253,$IP"
## Обновим переменную удалив ',' ##
IP=$(sed 's/,$//' <<<"${IP}")
echo "${IP}"

Заключение

Вы узнали, как удалить последний символ из текстового файла и каждой строки, включая переменные оболочки в Linux и Unix-подобных системах. Конечно, мы можем использовать команду awk, команду cut, Perl / Python и так далее.

 

You may also like

Leave a Comment