2014-01-23 1 views
0

Я хочу написать сценарий bash для копирования одного значения из текстового файла. В текстовом файле у меня есть строка с повторением. Пример:bash script, чтобы найти конкретный текст, если в текстовом файле присутствуют такие же многострочные строки

WIN [err]: fe I:35 A Q:24.17 si: 4554 INT:55.90 CA Mn A:61.00 B:44.45 INT:42.06 

WIN [err]: fe P:880 A Q:26.89 si: 325 INT:12.12 CA Mn A:57.62 B:44.11 INT:39.56 

some text line 
some text line 

"Line that i want to copy value:" WIN [err]: fe P:870 A Q:26.89 si: 325 INT: 5.5 CA Mn A:57.62 B:44.11 INT:39.06 

dec 2000 frs, 30.8 fs, 2029.95 ms/s 

Теперь я хочу, чтобы отобразить значение ех INT: 39.06, которая присутствует в этой линии «Line, что я хочу, чтобы скопировать значение:». Пожалуйста, рассмотрите строку с сообщением от «WIN [err] .....« Я новичок в сценариях оболочки. Поскольку я изменил свой текстовый файл. Теперь мы видим, что строка «INT:.? Присутствует в некоторых других линиях также Может кто-нибудь помочь Спасибо

ответ

0

Вероятно, это может работать:

awk -F'[: ]+' '$1=="WIN"{a=$NF} END {print a}' RS='[\r\n]+' file.log 
+0

Спасибо всем, но я получаю некоторые ошибки, такие как команда не найдена или sed не может читать 39.06 и т. д. Я новичок в scripti нг. Я также отредактировал свой вопрос, чтобы вы могли лучше помочь мне. Plz ссылается на мой отредактированный вопрос. Спасибо – user3004625

+0

Вы пробовали ответ Уильяма? – anubhava

+0

Да, я попытался, но я не получал никакого результата. Скрипт может работать, но он не отображает никакого вывода. – user3004625

2

Я не думаю, что вы хотите» второй в последнюю строку». Я считаю, что вы просите значение в последней строке, которая соответствует WIN (в данном примере вы даете, это эквивалент).

awk '/^WIN/ {v=$NF } END {split(v,a,":"); print a[2]}' input 
Смежные вопросы