LINUX.ORG.RU
ФорумAdmin

Распарсить через sed или grep нужный столбец.

 ,


0

1

Весь мозг уже себе сломал. Имеется:

Total memory 8,192K 1,024K 2,048K

Нужно взять первый столбец цифр (8,192K)

Да , это все как не странно в DOS (застрелите меня) Могу использовать csed (не GNU) или xgrep. cut нету. FOR урезанный , а использовать 4dos я не могу. Да ,можно использовать AWK, но он много весит.

С регулярными выражениями я не особо дружил всегда и обходился простыми вещами. В общем можно тут, что-то придумать ?



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

И всё-таки лучше awk. Я на досе в качестве POSIX-окружения использую DJGPP. Если вообще никак лучше где-нибудь взять нормальный cut.

slapin ★★★★★
()
echo Total memory 8,192K 1,024K 2,048K |  tr ' ' '\n' | sed -n 3p
anonymous
()

Если awk тяжёлый, cut'а нет, навелосипедь хрень на Си. Ведь компилятор-то у тебя есть?

DELIRIUM ☆☆☆☆☆
()

Насколько я понял, csed не умеет диапазоны повторений и в зависимости от версии по-разному трактует + и \+. Предлагаю попробовать так.

echo 'Total memory 8,192K 1,024K 2,048K' | sed 's/^[^ ]\+ [^ ]\+ \([^ ]\+\).*$/\1/'
Если не сработает, убрать слэши перед плюсами.

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

Насколько я понял, csed не умеет диапазоны повторений и в зависимости от версии по-разному трактует + и \+. Предлагаю попробовать так.

Спасибо тебе человек, все отрабатывает, но я ушлый дятел и не обратил внимание , что тут парсер все съел. вывод в DOS идет не через один пробел, а от Total memory идет 8 пробелов или семь. Опять же не понял, как бы это сделать.

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

Если awk тяжёлый, cut'а нет, навелосипедь хрень на Си. Ведь компилятор-то у тебя есть?

Да чего там, сразу может ASM ? Но увы не умею.Были мысли, но понимаю, что я буду делать это долго.

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

это на awk решается легко:

Был бы FOR нормальный в dos, это решается им вообще просто.

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

вывод в DOS идет не через один пробел, а от Total memory идет 8 пробелов или семь. Опять же не понял, как бы это сделать.

echo 'Total memory        8,192K 1,024K 2,048K' | sed 's/^[^ ]\+ [^ ]\+ \+\([^ ]\+\).*$/\1/'
или, если нужно только для Total memory,
echo 'Total memory        8,192K 1,024K 2,048K' | sed 's/^Total memory \+\([^ ]\+\).*$/\1/'

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