Это может работать для вас:
<<<$'one\ntwo\nthree' sed '/two/d'
или
<<<$'one\ntwo\nthree' sed '2d'
или
<<<$'one\ntwo\nthree' sed 'n;d'
или
<<<$'one\ntwo\nthree' sed 'N;N;s/two.//'
Sed
соответствует всем символам (включая \n
), используя точку .
, но обычно она уже удаляет \n
как часть цикла, поэтому дольше присутствует в шаблонном пространстве для сопоставления.
Только определенные команды (N
, H
и G
) сохраняют новые строки в образце / области удержания.
N
добавляет новую строку к пробелу шаблона, а затем добавляет следующую строку.
H
делает то же самое, за исключением того, что действует на пространство удержания.
G
добавляет новую строку в пространство образца, а затем добавляет все, что находится в области удержания.
Пространство для хранения пусто до тех пор, пока вы не поместите в него что-то так:
sed G file
вставит пустую строку после каждой строки.
sed 'G;G' file
вставит 2 пустые строки и т. Д. И т. Д.