Как получить строку без последних N символов? - PullRequest
0 голосов
/ 22 октября 2019

Если у меня есть строка bash в переменной. Как извлечь / извлечь эту строку, кроме последнего символа, , и насколько легко было бы, если бы я хотел извлечь до двух последних символов?

Пример:

# Removing the last character
INPUT="This is my string."
# Expected output "This is my string"

# Removing the last two characters
INPUT="This is my stringoi"
# Expected output "This is my string"

Ответы [ 3 ]

4 голосов
/ 22 октября 2019

С любой оболочкой POSIX:

OUTPUT="${INPUT%?}"  # remove last character
OUTPUT="${INPUT%??}" # remove last two characters
                     # and so on
3 голосов
/ 22 октября 2019

Образец:

INPUT="This is my string."
echo $INPUT |sed 's/.$//' # removes last character

INPUT="This is my stringoi"
echo $INPUT |sed 's/..$//' # removes last two character
2 голосов
/ 22 октября 2019

РЕДАКТИРОВАТЬ: Добавление общего решения здесь. Вы можете указать количество символов, которое вы хотите удалить из конца строки в awk с именем remove_char, и тогда оно должно работать соответствующим образом.

awk -v remove_char="2" '{print substr($0,1,length($0)-remove_char)}' Input_file


Не могли бы вы попробовать выполнить следующие действия.

awk '{print substr($0,1,length($0)-1)}' Input_file


2-е решение: сделать разделитель полей нет с помощью GNU awk

awk 'BEGIN{FS=OFS=""} {NF--} 1' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...