sed '/[^0-9]/d;s/.$/&p/' <input.txt |
sed -nf - file
Isso é dois sed s trabalhando juntos. O primeiro faz uma pequena tentativa de garantir que ele apenas edite linhas apropriadas, recusando-se a imprimir qualquer linha que contenha um único caractere não numérico e apenas editando quaisquer linhas contendo pelo menos um caractere. Basicamente, seu trabalho, no entanto, é transformar sua lista de números de linha em:
2088p
2089p
2095p
2096p
O segundo lê seu script de comando a partir da entrada padrão e não imprime linhas por padrão, então todas essas linhas editadas por sed se tornam uma lista de comandos para o sed o segundo. Ele executa esses comandos em file .
Aparentemente, uma técnica semelhante já foi recomendada, mas existe uma diferença fundamental entre os argumentos de invocação e a entrada de um processo. Existem limites distintos nas listas de discussão como:
some_process $(seq a billion)
Esse tipo de coisa está fadado ao fracasso, mas, desde que o processo saiba como lidar com isso, sua entrada é teoricamente ilimitada. Portanto, nesse caso, sed lê um arquivo - o |pipe - como entrada e o processa como um script sed , o que é muito diferente de entregá-lo a uma cadeia do mesmo comprimento em sua linha de comando na invocação. / p>