2016-06-21 4 views
0

У меня вопрос о grep.Получить подстроку с grep

У меня есть некоторые данные адреса в файле asc как простой текст. Первые 30 символов для имени. Если имя короче, чем пробелы в 30 символов, заполните его, чтобы убедиться, что его длина равна 30. В позиции 31 есть пробел для разделения имени из следующих данных, которые являются адресом. После того, как адрес также является пробелом и некоторыми другими данными. Мой план состоит в том, чтобы получить адрес, который начинается с индекса 32 и продолжает индексировать 50. В основном я получаю только ничего или данные, начинающиеся с начала строки. Я попробовал несколько методов, таких как

grep -iE '^.{30}' '.{8}$' myfile.asc 

или

grep –o -P '^.{31,34}' myfile.asc 

Я не могу найти определенный шаблон, так как каждый набор данных отличается за исключением пробельных символов, которые отделяют данные. Можно ли получить такую ​​подстроку, не полагаясь на другие методы через трубу? Я предпочитаю использовать grep, поскольку производительность является проблемой.

+0

Я думаю, что 'sed' может быть более подходящим для этого. –

ответ

0

Почему вы не используете cut вместо grep, если имеете дело с фиксированными позициями?

cut -c 32-50 myfile.asc 
Смежные вопросы