Leia apenas linhas específicas do arquivo de texto e salve as correspondências em variáveis

1

Eu tenho esse problema.

Eu preciso extrair algumas palavras do arquivo de texto, que eu encontro por padrão específico nesse texto. Por exemplo:

/this/is/path:
file1.txt,date-3
file2.txt,date-2
/this/is/path2:
file.txt,date-1
file2.txt,date-5

O padrão seria o /path: e escolher apenas linhas depois disso e antes de outro /path: . Porque pode haver os mesmos nomes de arquivos. E preciso encontrar file.txt exato e pegar essas 3 coisas:

  • arquivo
  • data
  • número de lançamento

em 3 variáveis.

Exemplo: Eu tenho um documento de texto no formato:

/home/name/Documents:
file.txt,12.5.2014-1
file2.txt,15.8.2014-2
/home/name/Music:
file.txt,15.4.2014-2
f2ile3.txt,8.2.2015-5
file2.txt,7.6.2014-3
/home/name/Video:
file.txt,date-5

e há música de diretório e documentos que têm os mesmos arquivos e eu quero escolher apenas de música, arquivo.txt. Mas quando ele procurar por arquivo.txt, ele também encontrará um no diretório Documentos, então eu só quero escolher entre o diretório de música e ele terminará no diretório Vídeo. E quando encontrar o arquivo.txt, ele será salvo da seguinte forma: 1.variable = file.txt, 2.variable = 15.4.2014,3.variable = 2.

    
por applenic 15.03.2015 / 23:52

1 resposta

0

Usando o Awk:

awk -F'[,-]' '
  /Music/ {f=1} 
  /^$/ {f=0} f && /file\.txt/ \
  {printf "%s\n%s\n%s\n", "var1="$1,"var2="$2,"var3="$3}
  ' file
var1=file.txt
var2=15.4.2014
var3=2

... assumindo que há, de fato, linhas vazias entre seus blocos (conforme o primeiro exemplo).

    
por 16.03.2015 / 02:22