Você pode usar ramificações:
sed '
1b1
7b1
14b1
16b1
# for the rest to be left alone, branch off (or delete them with "d"):
b
:1
long_command'
(observe que você também pode adicionar alguns 20,25b1
intervalos de linha ou /re/b1
para incluir linhas que correspondam a re
).
Ou você pode usar awk
:
awk 'NR == 1 || NR == 7 || ... {stuff}'
Ou usando um hash:
awk -v l=1,7,14,16 '
BEGIN{split(l, a, ","); for (i in a) lines[a[i]]}
NR in lines {stuff}'
(ou BEGIN{lines[1]lines[7]lines[14]lines[16]}
se não houver muitos)