★ Lista de episódios da série Tela Preta: 1 2 3 4 5 6 7 8 9
Solução fácil.
Um único comando.
split -l N arquivo.txt
Não conhece o comando?
Não conhece esta opção específica?
Problemas², vai ter que inventar.
sed, sempre ele.
sed que gera sed: avançado e poderoso.
paste + seq + seq? Quem diria!
Sem arquivos temporários.
Sem loop.
Sem design patterns.
Com mágica.
Com diversão.
Com salada de frutas.
Spoiler: a Mog dá “oi” tímido no final ;)
Resumo dos comandos:
- sed — edita linhas
- seq — sequência de números
- split — fatia arquivos
- paste — junta colunas
Histórico:
### split seq 20 seq 20 > 20.txt split -l 5 20.txt ls cat xaa cat xab rm x* ls ### sed w sed -n '1,5 p' 20.txt sed -n '4,11 p' 20.txt sed -n '4,11 w foo.txt' 20.txt ls cat foo.txt sed -n '1,5 w foo1.txt' 20.txt sed -n '6,10 w foo2.txt' 20.txt cat foo2.txt ### paste + seq seq 5 seq 1 20 seq 1 5 20 seq 5 5 20 seq 1 5 20 > a1 seq 5 5 20 > a2 paste a1 a2 paste a1 <(seq 5 5 20) paste <(seq 1 5 20) <(seq 5 5 20) rm a? ### sed constrói um script sed paste -d , <(seq 1 5 20) <(seq 5 5 20) paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w foo.txt/' paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w foo-&.txt/' paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w linhas-&.txt/' paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w linhas-&.txt/ ; s/,/-/2' ### aplicação do script sed paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w linhas-&.txt/ ; s/,/-/2' > foo.sed cat foo.sed ls ls sed -n -f foo.sed 20.txt ls cat linhas-1-5.txt cat linhas-16-20.txt ### recapitulando: estes são os dois comandos paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w linhas-&.txt/ ; s/,/-/2' > foo.sed sed -n -f foo.sed 20.txt ### agora num único comando, sem precisar de foo.sed rm foo.sed rm linhas-* paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w linhas-&.txt/ ; s/,/-/2' | sed -n -f - 20.txt paste -d , <(seq 1 5 20) <(seq 5 5 20) | sed 's/.*/& w linhas-&.txt/ ; s/,/-/2' | sed -n -f /dev/stdin 20.txt ls cat linhas-6-10.txt