Распечатать слово, прежде чем сопоставить шаблон - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь напечатать только первое слово после соответствующего шаблона, но не добился успеха, позвольте мне объяснить вам, каково мое требование

Входной файл

 $>cat abc.txt
    source: hrs1bdapoc2:21002
            1571426725 secs (436507.42 hrs) behind the primary

Желаемый вывод: -

echo $delay_time
1571426725

То, что я пытался использовать с помощью команды awk до сих пор: -

$>delay_time=`awk -F'secs' '{print $1}' abc.txt`
$>echo $delay_time
source: hrs1bdapoc2:21002 1571426725

Можете ли вы позволитья знаю, что я делаю не так

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Не могли бы вы попробовать следующее. Хотя я подозреваю, что ваш Input_file, потому что код, который вы показали, должен сработать.

awk 'match($0,/[0-9]+ secs/){print substr($0,RSTART+5,RLENGTH-5)}' Input_file

Также проверьте ваш Input_file, если он имеет контрольные символы M, выполнив cat -v Input_file, если да, то вы можете удалить их, выполнив tr -d '\r' Input_file > temp && mv temp Input_file

Также для создания переменной сделайте что-то вроде var=$(above command)

0 голосов
/ 19 октября 2019

Вывести первый элемент в строке, который имеет secs

delay_time=$(awk '/secs/{ print $1 }' abc.txt)

Использование обратных кавычек `не рекомендуется. Вместо этого используйте $( ... ) для подстановки команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...