Как к grep энная подстрока между данными разделителями?

Можно использовать qemu параметр командной строки для присвоения специального виртуального CPU. Существует некоторый CPU типа 32bit.

- модель CPU

Выберите модель CPU (-CPU? для списка и выбора дополнительной функции)

qemu-system-x86_64 - CPU? x86 qemu64 QEMU Виртуальная версия ЦП 1.4.2
явление x86 Явление AMD (TM) 9 550 Четырехъядерных Процессоров
x86 core2duo Intel(R) Core(TM) 2 Duo CPU T7700 процессор x86 kvm64 Common KVM на 2.40 ГГц
x86 qemu32 QEMU Виртуальная версия ЦП 1.4.2
x86 kvm32 Общий 32-разрядный процессор KVM
x86 coreduo Подлинный Intel(R) CPU T2600 x86 486 на 2.16 ГГц
x86 pentium
x86 pentium2
x86 pentium3
x86 версия ЦП 1.4.2 athlon QEMU Virtual
x86 n270 Intel(R) Atom(TM) CPU N270 1.60 ГГц
x86 Intel Celeron_4x0 Конроу (Core 2 Класса Conroe/Merom)
x86 Penryn Intel Core 2 Duo P9xxx (Core 2 Класса Penryn)
x86 Nehalem Intel Core i7 9xx (Core i7 Класса Nehalem)
x86 Westmere Westmere E56xx/L56xx/X56xx (Nehalem-C)
x86 SandyBridge Intel Xeon E312xx (Sandy Bridge)
x86 Haswell Intel Core Processor (Haswell)
Opteron 240 x86 Opteron_G1 AMD (Генерал 1 Класс Opteron)
Opteron 22xx x86 Opteron_G2 AMD (Генерал 2 Класса Opteron)
Opteron 23xx x86 Opteron_G3 AMD (Генерал 3 Класса Opteron)
класс Opteron 62xx x86 Opteron_G4 AMD ЦП
класс Opteron 63xx x86 Opteron_G5 AMD ЦП

3
01.04.2015, 02:34
5 ответов

В простейших терминах розетка является псевдофайлом, который представляет сетевое соединение. Как только розетка была создана (используя правильные примитивы, и правильные параметры для идентификации другого хоста), записи на сокет превращаются в сетевые пакеты, которые отправляются, и данные, полученные из сети, могут быть прочитаны из сокета.

В одном рассмотрении розетки очень похожи на трубы: они выглядят так же, как файлы для программ, использующих их, но не приводят к чтению или записи на диск; Скорее, они позволяют общаться с другой программой (локальным в случае труб и, возможно, удаленные в случае розетки). Они также предлагают, как вы упоминаете, двунаправленное общение (так много, как пару правильно связанных труб).

Наконец, оно распространено для программ на одной машине для связи с использованием стандартных сетевых протоколов, таких как TCP; Было бы расточительно пройти весь путь к сетевому оборудованию (если есть!), вычисляющие контрольные суммы и т. Д., Просто вернуться к тому же хозяину: вот в том, где приходят сокеты доменов Unix. Это очень похоже на обычные розетки, кроме Они соединяют процессы на том же хосте, а не удаленные процессы, и не пытаются вообще использовать какие-либо сетевые ресурсы. Таким образом, они являются средством межпроцессной связи.

Как упомянуто Tripleee, в ходе истории BSD трубы были введены раньше, чем розетки, и были перенесены с использованием розетки после того, как те, которые существовали. Такая же ссылка, Дизайн и внедрение операционной системы FreeBSD , упоминает, что трубы затем вернулись к реализации без сокета для причин производительности: это, безусловно, подчеркивает тот факт, что трубы обмениваются сходствами.

-121--8030-
echo $above_string | grep -oP "^([^?]*\?){2}\K[^?]*"

Изменение 2 к значению N - 1 , чтобы получить Nth String.

Это предполагает, что вы хотите nth String в этой строке . У вас есть N - 1 строки без ? , заканчивая буквальным? ( \? Так как это специальный символ в Perl Regex). Затем с \ K вы утверждаете, что вы не заинтересованы в предыдущем содержимом, тем самым извлечь только следующий текст до следующего сепаратора.

4
27.01.2020, 21:07

Использование awk Чтобы распечатать вторую и третью записи, разделенные нюнинами:

awk -F"?" '{printf "%s\n%s\n", $2,$3}'
Elvis August 16 
Leonard Nimoy February 27

Если вы хотите поменять запись, вы можете установить его как переменную:

awk -v record=2 -F"?" '{print $record}'
Elvis August 16 
4
27.01.2020, 21:07

SED

Вы можете использовать SED для Это, но это не рекомендуется, например Вот нулевое решение, которое использует квантификатор для выбора желаемого поля:

n=1
sed 's/\([^?]*? *\)\{'$n'\}//; s/?.*//' <<<"$above_string"

Вывод:

Elvis August 16 
2
27.01.2020, 21:07

Как насчет использования Cut? Если вы хотите распечатать 2-й шаблон

ECHO «$ upder_String» | CUT -F2 -D "?"

Второй столбец вперед

ECHO «$ keadse_string» | CUT -F2-D -D "?"

11
27.01.2020, 21:07

С помощью sed можно сделать:

sed '/\n/P;//d;s/[^?]*/\n&\n/[num];D'

... где вы замените вышеприведенный [номер] на некоторый номер, обозначающий желаемое событие.

Если указанное Вами пронумерованное вхождение не существует, как показано в следующем примере, sed просто ничего не распечатает.

echo ,2,3 | sed '/\n/P;//d;s/[^,]*/\n&\n/4;D'

Выше первого совпадения для последовательности нулевых или более не-комммандных символов находятся нулевые символы, встречающиеся перед первой запятой. Второе - 2, а третье - 3 - четвертого такого паттерна нет, поэтому подстановка не удалась.

Обратите также внимание, что не каждый sed будет поддерживать экранирование \n новой строки в правом поле замены, и, возможно, вам придется заменить символы n в экранирующей строке на буквальные новые строки.

sed '/\n/P;//d;s/[^?]*/\
&\
/[num];D'

Со строкой это делает:

str='> Leslie Cheung April 1 ? Elvis August 16 ? Leonard Nimoy February 27'
for o in 1 2 3
do  printf %s\\n "$str" |
    sed "/\n/P;//d;s/[^?]*/\n:$o:&\n/$o;D"
done

... что является всего лишь небольшим циклом для , который запускает sed 3 раза, пытаясь найти все совпадения 3 [^?]* и распечатать....

:1:> Leslie Cheung April 1
:2: Elvis August 16
:3: Leonard Nimoy February 27

... или по одному на каждое значение $o.

Вы можете немного расширить это, чтобы пропустить [num] не-нулевые случаи типа:

i= 
until [ "$((i+=1))" -gt 10 ] &&
      printf %s\\n "$str"
do    printf %s ":$i:$str?"; done |
sed '/..*\n?*/P;s///;s/[^?]*/\n&\n/7;D'

... которые печатают....

:3:> Leslie Cheung April 1
 Elvis August 16
 Leonard Nimoy February 27
:10:> Leslie Cheung April 1

Это также может быть включительно . Например:

printf %s\\n "$str?$str" |
sed '/.*\n[^_[:alnum:]]*/P;s///
    s/[_[:alnum:]]\{1,\}/\n&\n/3;D'

...которая печатает каждую третью не нулевую последовательность буквенно-цифровых и _ символов в конкатеннации двух Ваших строк....

April
August
Nimoy
Leslie
1
16
February
3
27.01.2020, 21:07

Теги

Похожие вопросы