Поиск и прохождение последнего значения текстового файла из выходного программного обеспечения

Поиск и прохождение последнего значения текстового файла из выходного программного обеспечения

06.02.2020 04:51:22 Просмотров 27 Источник

Я сделал несколько анализов в программном обеспечении и файл out put похож на этот:

ASReml 4.1 [28 Dec 2014] Analisys   Build mx [05 Oct 2018]   64 bit  Linux (x64)
 31 Jan 2020 07:26:33.206   1024 Mbyte        
 *****************************************************************
 * Contact support@asreml.co.uk for licensing and support        *
 *********************************************************** ARG *
Forming   136206 equations:   2 dense.
 Initial updates will be shrunk by factor    0.316
 Notice: Algebraic Denominator DF calculation is not available
         Numerical derivatives will be used.
 Notice: LogL values are reported relative to a base of -150000.00    
 Notice: 8 singularities detected in design matrix.
   1 LogL=-5856.80     S2=  481.74      42059 df 
   2 LogL=-5617.63     S2=  443.14      42059 df 
   3 LogL=-5405.81     S2=  393.42      42059 df 
   4 LogL=-5323.54     S2=  353.37      42059 df 
   5 LogL=-5309.22     S2=  327.81      42059 df 
   6 LogL=-5308.88     S2=  321.50      42059 df 
   7 LogL=-5308.88     S2=  320.63      42059 df 

          - - - Results from analysis of weight - - -
 Akaike Information Criterion   310623.75 (assuming 3 parameters).
 Bayesian Information Criterion 310649.69

Я хочу скопировать значение последнего LogL и передать его в отдельный файл, то есть -5308.88, так как каждый анализ отличается, положение LogL меняется, поэтому мне нужно условие. Я считаю, что принцип таков: paste <(awk 'FNR==12 {print $2}' df) >> file.results, но так как мне нужно условие для последнего значения LogL

У вопроса есть решение - Посмотреть?

Ответы - Поиск и прохождение последнего значения текстового файла из выходного программного обеспечения / Searching and past the last value of a text file from a output software

Является ответом!
RavinderSingh13

06.02.2020 05:00:06

tac+ awk.

tac file | awk 'match($0,/LogL=-[0-9]+|LogL=-[0-9]+\.[0-9]+/){print substr($0,RSTART+5,RLENGTH-5);exit}'

tacбудет читать Input_file от последней строки до первой строки, и в awkмы удостоверяемся, что только самое первое вхождение LogLчитается и выходит после того, как оно найдено, таким образом, нам не нужно отслеживать последнее вхождение, потому что мы преобразовали его в первое вхождение tac. Также регулярное позаботилась отрицательного значения с плавающей захвата также.

https://stackoverflow.com/questions/60086631/searching-and-past-the-last-value-of-a-text-file-from-a-output-software/60086695#comment106271339_60086695
не сработало... этот код не заканчивать
https://stackoverflow.com/questions/60086631/searching-and-past-the-last-value-of-a-text-file-from-a-output-software/60086695#comment106271361_60086695
@CuriousG., Когда я запускаю tac Input_file | awk 'match($0,/LogL=-[0-9]+|LogL=-[0-9]+\.[0-9]+/){print substr($0,RSTART+6,RLENGTH-6);exit}'это сработало отлично для меня.Какие-нибудь ошибки вы получаете?
https://stackoverflow.com/questions/60086631/searching-and-past-the-last-value-of-a-text-file-from-a-output-software/60086695#comment106271545_60086695
Хорошо, этот способ сработал. =)
Закрыть X