LINUX.ORG.RU

Удаление частей строки по сложной регулярке


0

1

Есть текстовый файл со строками вида:

0.000315625,1,DATA,0x10210046,0x8,0x01 0x4A 0x00 0x79 0x0A 0xB3 0x00 0x01,0x6208,ACK
0.000458,2,DATA,0x10210046,0x8,0x00 0x01 0xFF 0xFB 0x00 0x05 0x00 0x01,0x7092,ACK
0.00203325,3,DATA,0x00400003,0x8,0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05,0x492A,ACK

Нужно оставить в файле только жирную часть:

0.000315625,1,DATA,0x10210046,0x8,0x01 0x4A 0x00 0x79 0x0A 0xB3 0x00 0x01,0x6208,ACK

Желательно простым способом по регулярке в текстовом редакторе. Долго возился в vim и в обычном редакторе, не получается подобрать.


# echo 0.000315625,1,DATA,0x10210046,0x8,0x01 0x4A 0x00 0x79 0x0A 0xB3 0x00 0x01,0x6208,ACK | cut -d"," -f6
0x01 0x4A 0x00 0x79 0x0A 0xB3 0x00 0x01

ну или регулярками аналогично, делите на блоки с помощью запятой и берете шестой эллемент.

если сделать cat файла, и его обработать cut'ом - выведет шестой элемент каждой строки.

# cat test.txt| cut -d"," -f6
0x01 0x4A 0x00 0x79 0x0A 0xB3 0x00 0x01
0x00 0x01 0xFF 0xFB 0x00 0x05 0x00 0x01
0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05

l0stparadise ★★★★★
()
Последнее исправление: l0stparadise (всего исправлений: 3)
echo '0.000315625,1,DATA,0x10210046,0x8,0x01 0x4A 0x00 0x79 0x0A 0xB3 0x00 0x01,0x6208,ACK' | grep -o '\s*\(0x[0-9A-F]\{2\}\s*\)\{2,\}'

А вот так должно работать даже если позиция между запятыми не шестая, но тут уже от твоей задачи зависит, так что адаптируй сам.

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

Вот это уже не ко мне, я с десктопным программированием не в ладу.

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

Конечно, строка-то у тебя хорошо форматированная. Пересоздай в девелопменте, там быстро в ман ткнут.

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