El PDP -11 fue fabricado por Digital Equipment Corporation, y los sistemas operativos del fabricante para el PDP -11 fueron:
De estos, al menos RSTS/E requería otro sistema operativo para generar el sistema. Era una sola -tarea, un solo -sistema operativo de disco de usuario, llamado DOS por supuesto, que admitía poco más que cintas, discos, un teletipo, el sysgen
programa que le hacía preguntas de configuración y creaba un lenguaje ensamblador -archivos de configuración, y un ensamblador y enlazador. El resultado del programa sysgen
fue un sistema operativo de arranque RSTS/E. No puedo hablar por RT -11 o RSX -11 porque nunca tuve que sysgen, pero sysgen'd RSTS / E muchas veces a fines de la década de 1970.
Repararon todo eso con RSTS/E versión 6b o posiblemente 6c, que alojaba el programa sysgen
en sí mismo, a través de un sistema de tiempo de ejecución RT -11 (y también tenía un sistema de tiempo de ejecución RSX -11 ), pero todo esto había estado ocurriendo desde alrededor de 1968. De ahí el énfasis en que Unix es autosuficiente -.
Вы пропустили часть "пустая строка" в описании *
, которая присутствует в каждой строке.
В awk, чтобы сопоставить один или несколько B, используйте/B+/
B*
соответствует пустой строке. В -будет совпадение между каждым символом в каждой строке.
Вот вам образовательный инструмент:
awk -v re='B+' '{ gsub(re, "(&)"); print }' file
Эта программа awk
будет сопоставлять заданное выражение и заменять каждое совпадение тем, что совпало, но в круглых скобках. Это не идеально, но служит самым простым образовательным целям.
То же самое с sed
было бы для некоторого расширенного регулярного выражения PATTERN
,
sed -E 's/(PATTERN)/(&)/g' file
Выполнение команды awk
для ваших данных с выражениемB+
:
$ awk -v re='B+' '{ gsub(re, "(&)"); print }' file
U 8649 275 Asia
Canada 3852 25 North America
China 3705 1032 Asia
USA 3615 237 North America
India 1267 746 -Asia
Mexico 762 78 -North America
France 211 55 Europe
Japan 144 120 Asia
England 94 56 Europe
cim
(B)
(BB)
(BBB)
Как видите, только три строки в нижней части файла содержат верхний -регистр B
, так что только они совпадают.
Другой пример, использующий толькоB
:
$ awk -v re='B' '{ gsub(re, "(&)"); print }' file
U 8649 275 Asia
Canada 3852 25 North America
China 3705 1032 Asia
USA 3615 237 North America
India 1267 746 -Asia
Mexico 762 78 -North America
France 211 55 Europe
Japan 144 120 Asia
England 94 56 Europe
cim
(B)
(B)(B)
(B)(B)(B)
Здесь каждый B
сопоставляется индивидуально.
И, наконец, ваше фактическое выражение в вопросе (мои данные неправильно разделены табуляцией -), используяB*
:
$ awk -v re='B*' '{ gsub(re, "(&)"); print }' file
()U() () () () () () () () () ()8()6()4()9() ()2()7()5() () ()A()s()i()a()
()C()a()n()a()d()a() () () () ()3()8()5()2() ()2()5() () () ()N()o()r()t()h() ()A()m()e()r()i()c()a()
()C()h()i()n()a() () () () () ()3()7()0()5() ()1()0()3()2() ()A()s()i()a()
()U()S()A() () () () () () () ()3()6()1()5() ()2()3()7() () ()N()o()r()t()h() ()A()m()e()r()i()c()a()
()I()n()d()i()a() () () () () ()1()2()6()7() ()7()4()6() () ()-()A()s()i()a()
()M()e()x()i()c()o() () () () ()7()6()2() () ()7()8() () () ()-()N()o()r()t()h() ()A()m()e()r()i()c()a()
()F()r()a()n()c()e() () () () ()2()1()1() () ()5()5() () () ()E()u()r()o()p()e()
()J()a()p()a()n() () () () () ()1()4()4() () ()1()2()0() () ()A()s()i()a()
()E()n()g()l()a()n()d() () () ()9()4() () () ()5()6() () () ()E()u()r()o()p()e()
()c()i()m() ()
(B)
(BB)
()
(BBB)
Это показывает, что B*
соответствует в -между каждым символом во всем файле, за исключением прогонов нескольких символов B
ближе к концу.
Мы также можем использовать это, чтобы показать разницу между [A-Za-z-]
и [A-Za-z-]+
(, о которой вы спрашивали меня ранее):
$ awk -v re='[A-Za-z-]' '{ gsub(re, "(&)"); print }' file
(U) 8649 275 (A)(s)(i)(a)
(C)(a)(n)(a)(d)(a) 3852 25 (N)(o)(r)(t)(h) (A)(m)(e)(r)(i)(c)(a)
(C)(h)(i)(n)(a) 3705 1032 (A)(s)(i)(a)
(U)(S)(A) 3615 237 (N)(o)(r)(t)(h) (A)(m)(e)(r)(i)(c)(a)
(I)(n)(d)(i)(a) 1267 746 (-)(A)(s)(i)(a)
(M)(e)(x)(i)(c)(o) 762 78 (-)(N)(o)(r)(t)(h) (A)(m)(e)(r)(i)(c)(a)
(F)(r)(a)(n)(c)(e) 211 55 (E)(u)(r)(o)(p)(e)
(J)(a)(p)(a)(n) 144 120 (A)(s)(i)(a)
(E)(n)(g)(l)(a)(n)(d) 94 56 (E)(u)(r)(o)(p)(e)
(c)(i)(m)
(B)
(B)(B)
(B)(B)(B)
$ awk -v re='[A-Za-z-]+' '{ gsub(re, "(&)"); print }' file
(U) 8649 275 (Asia)
(Canada) 3852 25 (North) (America)
(China) 3705 1032 (Asia)
(USA) 3615 237 (North) (America)
(India) 1267 746 (-Asia)
(Mexico) 762 78 (-North) (America)
(France) 211 55 (Europe)
(Japan) 144 120 (Asia)
(England) 94 56 (Europe)
(cim)
(B)
(BB)
(BBB)