Como adicionar uma nova linha no xargs

0

Estou tentando escrever um comando para capturar cada licença no sistema operacional linux (kali) e associá-lo ao pacote correto. A ideia básica é que você pesquise / usr / share / doc de forma recursiva para o arquivo "copyright", então gere-o e procure por "^ License" a licença líder. Pode haver múltiplos por pacote.

Estou tentando criar um csv que leva todos os nomes de pacotes e os coloca no primeiro campo de cada linha e, em seguida, segue com cada licença delimitada por vírgula.

Meu fluxo básico: faça uma lista de cada pacote (pronto). Faça uma lista onde cada linha é csv das licenças encontradas. Em seguida, basta colar o arquivo 1 e o arquivo 2, boom.

Problema, eu tenho que trocar as novas linhas na saída do comando por vírgula, mas eu preciso reinserir uma nova linha no final de cada iteração de xargs para que minhas licenças csv se alinhem com a lista de pacotes. Eu tentei isso de várias maneiras. Quando eu faço o comando de substituição, ele quebra o translate ou echo (não lê mais \n como uma nova linha. Eu tentei \n , sem sorte).

Aqui está o que eu tenho que só precisa de uma maneira de colocar uma nova linha por ciclo de xargs.

find . -name copyright |xargs -l cat |grep "^License" |tr '\n' ',' 

Então, se eu pudesse canalizar para algo que insira \n após cada ciclo de xarg, eu estaria pronto. Eu sei que posso escrever um loop for para isso com variáveis.

    
por bashCypher 18.09.2018 / 04:29

1 resposta

1

Se você está bem com o awk, tente esta solução:

find $PWD -name copyright | xargs awk 'BEGIN{ORS=","} FNR==1{print "\n"FILENAME}; $0 ~ /^License/ {print $0}' | sed 's/,$//g'  |awk -F',' 'NF>1'
    
por 18.09.2018 / 08:30