sed: вывести только первое совпадение с шаблоном [дубликат]

В современных версиях Linux, если вы запустите этот код в bash, это не приведет к сбою вашей системы. Он использует системный вызов fork. '& 'из вашего fucntion означает, что он выполняется в фоновом режиме, и когда он пытается это сделать, он использует системный вызов fork (). Он будет разветвляться так много раз, что вилка будет недоступна, поэтому вы не сможете запускать новые приложения , потому что это тоже необходимо для разветвления, но приложения, которые у вас уже запущены, будут в порядке.

2
05.05.2017, 15:15
2 ответа

Используйте q для явного выхода при достижении конечного шаблона.

В GNU sed:

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk возможно, было бы проще не повторять конечный шаблон:

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END
10
27.01.2020, 21:51

Если это первое вхождение, возможно, awk лучше подходит для этого: awk 'NR==1,/original/{sub(/original/, "replacement")} 1' file . Взято из здесь.

1
27.01.2020, 21:51

Теги

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