Я хочу удалить последний символ из строки:
[root@ozzesh ~]#df -h | awk '{ print $5 }'
Use%
22%
1%
1%
59%
51%
63%
5%
Ожидаемый результат:
Use
22
1
1
59
51
63
5
text-processing
Özzesh
источник
источник
%
знак?Ответы:
Удалить последний символ.
Но в этом конкретном случае вы также можете сделать:
С помощью арифметического выражения (
$5+0
) мы заставляемawk
5-е поле интерпретировать как число, и все, что находится после числа, будет игнорироваться.Обратите внимание, что GNU
df
(ваше-h
расширение уже является GNU, хотя здесь и не нужно) также можно указать вывод только процента использования диска:(tail пропускает заголовки, а tr удаляет все, кроме цифр и разделителей строк).
В Linux смотрите также:
источник
{print +$5}
будет работать так же ...awk
реализаций, где это не работает , где+
унарный оператор просто игнорируется и не вызывает преобразования строк в числовые.С
sed
этим довольно легко:Синтаксис есть
s(ubstitute)/search/replacestring/
..
Указывает любой символ, а$
конец линии. Так.$
удалит только последний символ.В этом случае ваша полная команда будет выглядеть так:
источник
sed
избыточна: это может быть сделано вawk
:df -h | awk '{gsub(/%/,""); print $5}'
У меня есть два решения:
порез:
echo "somestring1" | rev | cut -c 2- | rev
Здесь вы переворачиваете строку и обрезаете строку из второго символа и снова переворачиваете.
sed:
echo "somestring1" | sed 's/.$//'
Здесь вы будете искать регулярное выражение,
.$
которое означает любые символы, за которыми следует последний символ, и заменять его на ноль//
(между двумя слешами).источник
В awk вы могли бы сделать один из
источник
другой подход:
Преврати это в функцию:
Тогда назовите это так:
mapfile
это особенность bash4Подвох в том, что вы должны предоставить персонажа для удаления; если вы хотите, чтобы оно было таким, каким будет последний символ, вы должны передать
'?'
или''
. цитаты требуются.источник
источник
Попробуйте с этим:
Нормальное использование: (т.е.)
Ответ должен быть: X987654321X
источник
источник
cut -d '%' -f1
которого является правильным ответом, чтобы получить все в строке до первого «%».Необязательно : для удаления 1-й и последней строки используйте
sed -ie '1d;$d'
имя файлаисточник
источник