2014-09-20 6 views
0

Удивительно, может ли кто-нибудь объяснить разницу между Next (N) и следующей (n) командой в sed. Я пытался следовать.Команда sed next & Next

это мой входной файл

Consult Section 3.1 in the Owner and Operator Guide 
Consult Section 3.1 in the Owner and Operator Guide 
for a description of the tape drives 
available on your system. 

я использовал следующее (следующая команда)

/Operator/{ 
n 
s/Owner and Operator Guide/Installation Guide/ 
} 

результат

Consult Section 3.1 in the Owner and Operator Guide 
Consult Section 3.1 in the Installation Guide 
for a description of the tape drives 
available on your system. 

тогда я использовал следующие

/Operator/{ 
N 
s/Owner and Operator Guide/Installation Guide/ 
} 

результат

Consult Section 3.1 in the Installation Guide 
Consult Section 3.1 in the Owner and Operator Guide 
for a description of the tape drives 
available on your system. 

Пожалуйста, вы можете объяснить, почему я получаю две разные результаты? мне нужно использовать команду Next (N) только в многострочном пространстве шаблонов? и где использовать следующую (n) команду.

Если я использую команду sed/Руководство пользователя и руководство по эксплуатации/Руководство по установке/'input.txt изменит все, как ожидалось.

ответ

2

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

/Operator/{ 
n 
s/Owner and Operator Guide/Installation Guide/ 
} 

/Operator/ подобран для первой линии. После выполнения команды n мы печатаем пространство с образцом, чтобы ваша первая строка была напечатана как есть. Вторая строка загружается в пространство шаблонов и выполняется подстановка. В результате вы видите изменения во второй строке.

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

Смежные вопросы