Хотя вы можете сделать это с помощью AWK, я предлагаю Perl. Вот сценарий:
#!/usr/bin/env perl
use strict;
use warnings;
while (my $pattern = <>) {
my $text = <>;
my $start = index $pattern, 'A';
my $stop = index $pattern, 'B', $start;
print substr($text, $start, $stop - $start + 1), "\n";
}
Вы можете назвать этот файл сценария так, как вам нравится. Если вы хотите назвать его interval и поместить в текущий каталог, вы можете пометить его исполняемым файлом chmod +x interval. Затем вы можете запустить:
./interval paths...
Заменить paths... на фактическое имя пути или пути к файлам, которые вы хотите проанализировать. Например:
$ ./interval interval-example.txt
7890MNOP
34567890MNOPQRST
Способ работы сценария заключается в том, что до тех пор, пока не будет достигнут конец ввода (т. Е. Больше строк), он:
Читает строку, , который является вашей строкой с A и B, а другой - $text, которая является строкой, которая будет нарезана. Находит индекс первого A в $pattern и первый B, кроме тех, которые могут предшествовать этому первому A, и сохраняет их в переменных $start и $stop, соответственно. Вырезает только часть $text, индексы которой варьируются от $start до $stop. Функция substr Perl принимает аргументы смещения и длины, что является причиной вычитания, и вы включаете письмо сразу под B, что является причиной добавления 1. Печатает именно эту часть, за которой следует разрыв строки.Если по какой-то причине вы предпочтете короткую однострочную команду, которая выполняет одно и то же, но легко вставлена, но также сложнее понять и поддерживать - тогда вы можете использовать это: [ ! d10]
perl -wple '$i=index $_,"A"; $_=substr <>,$i,index($_,"B",$i)-$i+1' paths...
(Как и раньше, вы должны заменить paths... на фактические пути.)
Предусмотрен 64-разрядный пакет, совместимый с Debian, который вы можете установить из настраиваемого ppa / репозитория, протестированного в Ubuntu 16.04 и 18.04:
64-разрядный пакет, совместимый с Debian ключ подписи для проверки загруженных пакетов
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4E0C443A
подпись [
echo deb http://repository.cliqz.com/dist/debian-release stable main | sudo tee /etc/apt/sources.list.d/cliqz.list
Обновить список доступных пакетов
Обновить список доступных пакетов
sudo apt-get install cliqz
В качестве альтернативы вы можете загрузить и установить пакет deb вручную, но имейте в виду, что вы пользовательские ppa / repository :
deb пакет вручную Они официально не поддерживают Cliqz для Linux, это означает, что: 1. Cliqz для Linux не так хорошо протестирован, как для других операционные системы. 2. Поддержка пользователей не будет отдавать приоритет запросам о Cliqz для Linux.
Источник: Cliqz.com
Предусмотрен 64-разрядный пакет, совместимый с Debian, который вы можете установить из настраиваемого ppa / репозитория, протестированного в Ubuntu 16.04 и 18.04:
64-разрядный пакет, совместимый с Debian ключ подписи для проверки загруженных пакетов
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4E0C443A
подпись [
echo deb http://repository.cliqz.com/dist/debian-release stable main | sudo tee /etc/apt/sources.list.d/cliqz.list
Обновить список доступных пакетов
sudo apt-get update
Обновить список доступных пакетов
sudo apt-get install cliqz
В качестве альтернативы вы можете загрузить и установить пакет deb вручную, но имейте в виду, что вы пользовательские ppa / repository :
deb пакет вручную Они официально не поддерживают Cliqz для Linux, это означает, что: 1. Cliqz для Linux не так хорошо протестирован, как для других операционные системы. 2. Поддержка пользователей не будет отдавать приоритет запросам о Cliqz для Linux.
Источник: Cliqz.com
Предусмотрен 64-разрядный пакет, совместимый с Debian, который вы можете установить из настраиваемого ppa / репозитория, протестированного в Ubuntu 16.04 и 18.04:
64-разрядный пакет, совместимый с Debian ключ подписи для проверки загруженных пакетов
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4E0C443A
подпись [
echo deb http://repository.cliqz.com/dist/debian-release stable main | sudo tee /etc/apt/sources.list.d/cliqz.list
Обновить список доступных пакетов
sudo apt-get update
Обновить список доступных пакетов
sudo apt-get install cliqz
В качестве альтернативы вы можете загрузить и установить пакет deb вручную, но имейте в виду, что вы пользовательские ppa / repository :
deb пакет вручную Они официально не поддерживают Cliqz для Linux, это означает, что: 1. Cliqz для Linux не так хорошо протестирован, как для других операционные системы. 2. Поддержка пользователей не будет отдавать приоритет запросам о Cliqz для Linux.
Источник: Cliqz.com