2015-02-28 2 views
2
Thu Feb 19 10:42:50: Submitted from host <iitmlogin5-ib0>, CWD <$HOME/Bipin/JAS_Data/Big_Domain/128np_IC/Normal_queue>, Output File <file.stdout.159375>, Error File <file.stderr.159375>, Exclusive Execution, 128 Task(s), Requested Resources <span[ptile=16]>; RUNLIMIT 

из приведенной выше строки, я хочу извлечь значения Нет задач i.e '128' и '16' ptile. хочу прочитать эти значения в переменнойизвлекать значение и читать как переменную

Task = 128 ptile = 16

ответ

2

Вы можете использовать grep -P с read:

read task ptile < <(grep -oP '.*\K\b\d+(?= Task)|.*ptile=\K\d+' file | tr '\n' ' ') 

echo "[$task] - [$ptile]" 
[128] - [16] 
+0

Спасибо, но внутри скрипт не работает задача чтения ptile << (grep -oP '. * \ K \ b \ d + (? = Task) |. * ptile = \ K \ d +' ./159375.out | tr '\ n' '') ./ai.sh: строка 6: синтаксическая ошибка возле неожиданного токена '<' – user3742796

+0

Убедитесь, что вы используете его в BASH – anubhava

+0

#!/Bin/bash sudo bjobs -l 159375 | sed -n '/ Представлено /,/^ $/p' | tr -d '\ n' | sed -e 's/// g'> ./159375.out if grep -q "Эксклюзивное исполнение" ./159375.out then read task ptile <<(grep -oP '. * \ K \ b \ d + (? = Task) |. * ptile = \ K \ d + './159375.out | tr' \ n '' ') Nodes_Required = $ ($ tasks/$ ptile) echo $ Nodes_Required – user3742796

Смежные вопросы