Я пытаюсь очистить следующий файл:Внесите изменения в файл (SED, AWK)
1. 10.160.120.10 ; 140.0.0.40 ;Data-- 1155~00120~xtl~12/01/2016 03:00:24~000BBBBBA4FB~ÍežG5„È&gÈ[email protected]Ÿ#•Œ‘„¦åEI²6frÞõ+ã:®*ÓÓÂ"ða5»V$è~
2. ¼?Amµxðïej£„7‹ìËÏð‡.4 --
3. 10.160.120.11 ; 140.10.10.10 ;Data-- 1155~00120~xtl~12/01/2016 03:00:54~2B3BB1EB1BBB~£ˆD]†CÀ,£ÑÉ»In&Ry+/jÑ%A¡ã ÷d_#C÷—NÏÕÞ
3. Ü‚úè"åD\’c\ûñ7x°yFæï --
Обратите внимание, что номера не являются фактической частью файла. Это всего лишь ссылка на количество строк. Размер строки зависит от закодированного сообщения (вот почему 3 перезаписывается, потому что это в основном одна строка). Есть тысячи записей, но они соответствуют одному и тому же шаблону. Каждая запись заканчивается на (-).
В основном, я пытаюсь добиться того, чтобы просто получить IP-адреса бок о бок.
Например:
10.160.120.10 000BBBBBA4FB
Мой первый шаг должен был бы удалить все между первым (;) и четвёртой (~), так как этот шаблон является одинаковым для каждой записи.
Это приводит меня к этому.
sed 's/;.*~//'
Однако эта конкретная команда удалит все до последнего (~), а не четвертого.
Если успешно удаляет все между первым (;) и четвёртой (~) было бы заставить меня что-то вроде этого:
0.165.65.113 0008B9A4F3 ~ ÍežG5„ Э. & Gee @ Ÿ # • Œ « |åEI²6frÞõ + ã: ® * ООА "DA5» V $ è ~ ¼ Amμxðïej £? «7 <ìËÏð ‡ 0,4 -
И тогда я предполагаю, что я мог бы удалить все после первой (~), так что я могу получить нужный результат.
Я следую правильной процедуре? Должен ли я достичь этого с помощью swd или awk? Любое предложение iated!
Если вы хотите удалить следующую тильду, используйте '[^ ~] * ~' вместо '. * ~'. Второй тильде, '[^ ~] * ~ [^ ~] * ~' и т. Д. –
Да, это было полезно. Спасибо! –