Obtenha dados específicos no formato de tabela usando o script bash

2

Eu tenho um arquivo de texto, test.txt , com este conteúdo:

a:b:c:u
e:f:g:h
i:j:k:l
m:n:v:w
q:r:s:t

Eu quero fazer um script bash que irá cortar dados de arquivos de texto como este, por exemplo:

./run.sh test.txt 3 2 5 3

j:k
n:v
r:s

O primeiro parâmetro é o local do arquivo, o segundo é a primeira linha desejada, o terceiro é a coluna dessa linha, o quarto é a última linha e o último é a coluna dessa linha.

Comecei a trabalhar neste roteiro, mas fiquei preso.

Aqui está o meu código:

#!/bin/bash
if [ ! -f  ]; then
    echo "The first parameter doesn't exist."
    exit 2
elif [ "$#" -ne 5 ]; then
    echo "Given parameter is less than five."
    exit 1
else
    i=0
    while read line; do
        test $((++i)) =  && cut -d':' -f
    done
fi

Como devo completar meu código para funcionar como descrito acima?

    
por bozsi12 06.04.2017 / 21:20

1 resposta

3

Você poderia gerenciar assim:

#!/bin/bash
if [[ ! -f "" ]]; then
  echo "oops, no such file"
  exit 1
elif [[ $# -lt 5 ]]; then
  echo "oops, not enough params"
  exit 2
fi
sed -n ",p" "" | cut -d ':' -f-

Notas

  • sed -n chama sed no modo silencioso - sem impressão até que peça algo
  • ",p" "" linhas de impressão de até , inclusive no arquivo
  • | cut -d ':' -f- campos de impressão a inclusive de qualquer sed impresso
por Zanna 06.04.2017 / 23:24