Remova todas as linhas abaixo de um número de linha específico de uma coluna específica

1

Eu fiz uma pergunta antes sobre a exclusão de linha verdadeira e recebi ótimas respostas, mas agora estou interessado em saber como você removeria todas as linhas abaixo de um número de linha específico de uma coluna específica. Todas as outras colunas e linhas devem permanecer intactas.

Como bônus, como você também colaria / imprimia outra coluna no espaço excluído específico

Exemplo (as colunas são delimitadas por tabulações ) - remova a linha 2 e todas as linhas abaixo dela apenas na coluna 1, depois desloque uma coluna para esquerda e mova as colunas 2 e 3 da linha 2 para baixo:

ENTRADA:

hunkey dorey pringle  
jungley fevery jingles  
freshly cutting jackle  
Queen Kingly Squire

OUTPUT:

hunkey dorey pringle  
fevery jingles  
cutting jackle  
Kingly Squire
    
por Giles 28.05.2016 / 15:28

3 respostas

1
sed 'N,$s/^[^ ]\+[ ]\+//'

onde N é o número da linha da primeira linha para perder sua primeira coluna.

    
por 28.05.2016 / 16:23
4

awk solution.

awk '{if(NR>1){$1="";sub(" ","")}}1'
    
por 28.05.2016 / 16:43
0

Com o GNU sed:

sed '2,$ s/[^\t]*\t//' file

Portátil:

tab=$(printf '\t')
sed '2,$ s/[^'"$tab"']*'"$tab"'//' file
  • 2, $ da segunda linha até a última linha
  • s / [^ \ t] * \ t // substitui qualquer caractere, exceto o caractere de tabulação, pela próxima guia (a primeira tab) com nada.
por 28.05.2016 / 19:13