Разделительная линия от конца (кросс-платформенная)

#bash #replace

Вопрос:

У меня есть текст, который нужно разделить; а именно, поставить пробел после двух символов в конце строки. Из «4,20 ГБ» вам нужно получить «4,20 ГБ«. Я знаю, что это можно сделать с sed помощью , awk и т. Д., Но я ищу легкий и более кроссплатформенный метод (для Linux/Unix/BSD).

Можно ли это сделать с bash помощью и его функций? По какой-то причине я подумал printf , что смогу это сделать, но быстрая проверка не дала ничего положительного.

Ответ №1:

Вы ищете «более кроссплатформенный метод, чем sed «, а затем спрашиваете: «Можно ли это сделать с bash помощью и его функций?»

Можно с уверенностью сказать, что sed он установлен (или «легко устанавливается») на большем количестве компьютерных архитектур, чем bash так, использование sed должно быть более «кроссплатформенным», чем использование bash .

Ответ №2:

Если я вас правильно понимаю, каждая строка, заканчивающаяся несколькими цифрами, за которыми следует ГБ, требует, чтобы вы добавляли пробел перед ГБ. Я не должен использовать слово «разделить«, которое предполагает, что вы хотите разделить одну строку на две строки.

Попробуй:

 sed -i 's/GB$/ GB/' [filenames ...]
 

Я думаю , что sed это более «кроссплатформенно», чем bash , потому что, где бы вы ни были bash , у вас легко будет sed , как говорит @fuxoft в своем ответе.