Огромное примечание: я не говорю о текстовых редакторах!
Мне нужно извлечь (стандартный вывод в порядке) прямоугольник текста из текстового файла. Прямоугольник должен быть текстом между строками l1 и l2 и столбцами c1 и c2.
Я уже могу сделать это с головой, хвостом и разрезанной трубкой, и мне интересно, есть ли инструмент, который может сделать это «все сразу» (тм).
Есть идеи?
Вы могли использовать sed, это очень гибко. Например, для печати строк 2 - 5, и 4 столбца, запускающиеся в столбце 3:
sed -n '2,5 s/^.\{3\}\(.\{1,4\}\).*$/\1/p'
-n
средства не печатают строку, если никакое соответствие 2,5
средства только для строк 2 - 5 s/1/2/p
средства заменяют 1 на 2 и печатают ее ^.\{3\}
, соответствие в начале строки (^) любой символ точно 3 раза \( \)
выбирает то, что мы произведем использование \1
в выборе части .\{1,4\}
замены любой символ, после того как до 4 происшествий .*$
подходят любой символ в конец строки Все вместе, это сделает то, что Вы хотите.
РЕДАКТИРОВАНИЕ:
предыдущее решение пропускает строки меньше чем с 4 символами.
А лучшее решение:
sed -n '2,5 s/^.\{0,3\}\(.\{0,4\}\).*$/\1/p'
Этот поместит пустую строку, если строка будет меньше, чем необходимые символы путем разрешения 0 столбцов, прежде чем произведено и 0 столбцов в выводе.
in2csv
, который звонит/path/to/new/in2csv
в случае, если it' s названный с-n
опция и обычное/usr/bin/in2csv
еще. – dessert 4 November 2017 в 00:51