Соответствие пространства или новой строки в SED

Диск разделен на один или несколько разделов . Для Windows обычно есть только один, возможно, где-то спрятан раздел восстановления. Раздел - это логически непрерывная область диска, например «секторы с 1 по 10 000 000».

На разделе может быть построена файловая система. Для Windows это NTFS или FAT; для Linux это одна из версий ext или различных других вариантов.

Внутри файловой системы находятся файлы и каталоги. В Linux есть каталоги, я понятия не имею, как вы догадались, что их нет.

Как операционная система представляет пользователю несколько разделов на нескольких дисках? В Windows это делается с помощью букв дисков : C: , D: и т. Д. В Linux букв дисков нет, и все делается с ] точки монтирования : в определенном каталоге перенаправить доступ к другой файловой системе. (+) Часто, если вы вставляете компакт-диск или USB-накопитель, он появляется где-то в папке / media или / mnt .

/ usr и / usr / bin обычно находятся в одной файловой системе, но это не обязательно. Люди могут иметь в виду «файловую систему, которая содержит каталог / usr / bin », когда они используют это выражение.

(+) То же самое можно сделать и с точками соединения NTFS, но люди редко это делают. Пока у них не закончатся буквы дисков.

5
26.09.2018, 12:24
2 ответа

sed работает со строками за раз и удаляет символы новой строки при обработке каждой строки.

Таким образом, чтобы сделать то, что вы хотите, вы должны сопоставить якорь конца строки ($), а не буквальный символ новой строки.

Это должно работать:

sed 's:\(\s\)\(00011\)\(\s\|$\):\1$03\3:g'
7
27.01.2020, 20:37
$ sed 's/\<00011\>/$03/g' file
ADD    00000 00001 $03
LSH    $03 00100 01111
ADD    $03 10100 00010
JSR    00011101000111010101100010

\<и \>соответствуют границам слова нулевой ширины -в начале и конце слова соответственно. BSD sedтакже распознает [[:<:]]и [[:>:]], а GNU sedтакже понимает \bкак границу слова.

sedникогда не увидит новые строки во входных данных. Кроме того, \sспецифичен для GNU sed. Чтобы соответствовать символу пробела в стандартном sed, просто используйте буквальный пробел (, чтобы соответствовать пробелу -или вкладке -, используйте[[:blank:]]).

6
27.01.2020, 20:37

Теги

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