Usando sed
Pelo que entendi, você tem um arquivo text
que é algo como:
$ cat text
1
2
3
4
5
E você deseja extrair as linhas 3 e 5 e colocá-las no meio de algumas instruções echo
. Nesse caso, tente:
$ { echo 'Some text'; echo 'Some text'; echo -n 'Some text'; echo -n "$(sed -n 3p text)$(sed -n 5p text)"; echo 'Some text'; echo 'Some text'; } >file
$ cat file
Some text
Some text
Some text35Some text
Some text
Simplificação
O acima pode ser realizado com um único comando echo
:
$ echo $'Some text\nSome text\nSome text'"$(sed -n 3p text)$(sed -n 5p text)"$'Some text\nSome text' >file
$ cat file
Some text
Some text
Some text35Some text
Some text
Ou como um único comando printf
:
$ printf 'Some text\nSome text\nSome text%s%sSome text\nSome text\n' "$(sed -n 3p text)" "$(sed -n 5p text)" >file
$ cat file
Some text
Some text
Some text35Some text
Some text
Como o comando sed funciona
O acima usa comandos sed como:
sed -n 3p text
Aqui, -n
é uma opção que informa ao sed não imprimir nada a menos que explicitamente o solicitemos. 3p
é um comando que diz ao sed para imprimir a terceira linha. Da mesma forma, usamos 5p
se quisermos imprimir a quinta linha.
Usando o awk
Uma solução awk (dica de chapéu: Runium):
awk '
BEGIN{
printf "%s","Some text\nSome text\nSome text"
}
NR>5 {exit}
NR==3 || NR==5 {printf "%s", $0}
END{
printf "%s","Some text\nSome text\n"
}' text