LINUX.ORG.RU

Выборочная обработка вывода

 ,


0

0

Всем привет. Что-то голова уже пухнет, не могу сообразить, как на bash реализовать нужную задачу. Итак, есть, допустим, файл, который содержит данные по планкам памяти в таком виде:

	Size: 2048 MB
	Size: 2048 MB
	Size: 32 GB
	Size: 32 GB
	Size: 32 GB
	Size: 2048 MB
	Size: 2048 MB
	Size: 2048 MB

Далее идет разбор и суммирование, но это не важно тут. Главное - данные выдаются именно в таком формате, т.е. до 16 гигов - в мегабайтах, а выше - в гигабайтах.

Далее идет написана парсилка для строк в мегабайтах.

Вопрос, как можно реализовать на баше изменение строк с данными в GB и перевод их в мегабайты, но так чтобы остальные строки не трогались и формат не менялся?

Можно, конечно, гвоздями прибить и sed'ом менять значения через пайп нужных модулей памяти, но хочется универсальности скрипта, чтобы при выводе в гигах переводил в метры самостоятельности. Спасибо.

★★

Последнее исправление: dgeliko (всего исправлений: 2)

Ответ на: комментарий от r3lgar

man awk это конечно хорошо, но можно конкретики? С awk пробовал, не получилось, параметры замены не додумываются как-то...

dgeliko ★★
() автор топика
Последнее исправление: dgeliko (всего исправлений: 1)
Ответ на: комментарий от kiotoze

Похоже такая получается конструкция:

awk '{gsub(/\s*(Size:\s*).*[0-9]*\s*GB/, $1 " " $2 * 1024 " MB")}1'

dgeliko ★★
() автор топика
Ответ на: комментарий от dgeliko

Ловишь GB, делаешь подмену GB на «* 1024» перед принтом, получаешь MB. Я уже достаточно употребил, чтобы не мочь писать на AWK. А вообще, на Perl это будет в разы проще.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Понимаю, но задача модифицировать существующий скрипт, а он написан на баше. Да и там не только по памяти инфо собирается, а куча всего остального, переписывать на перле нет ни желания, ни умения. По сути бага была всего в одной строке, которую пофиксил. Благодарю.

dgeliko ★★
() автор топика
Ответ на: комментарий от r3lgar

Я не стал его приводить, потому что проблема была в одной строке только.

dgeliko ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.