Извлечь номер текстового файла, используя bash - PullRequest
0 голосов
/ 03 июня 2018

У меня есть переменная со следующей строкой в ​​качестве ввода:

x}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:>12,34 M<.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}.gbi .gb4{color:#dd8e27 !important}.gbf .gb4{color:#900 !important} </style><style>body,td,a,p,.h{font-family:arial,sans-serif}body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac_m td{line-height:17px}form{margin-bottom:20px}.h{color:#36c}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{font-weight:bold;font-style:normal}.lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17px arial,sans-serif}.ds{display:inline-box;display:inline-block;margin:3px 0 4px;margin-left:4px}input{font-family:inherit}a.gb1,a.gb2,a.gb3,a.gb4{color:#11c !important}body{background:#fff;color:black}a{color:#11c;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#36c}a:visited{color:#551a8b}a.gb1,a.gb4{text-decoration:underline}a.gb3:hover{text-decoration:none}#ghead a.gb2:hover{color:#fff !important}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px}.lsbb{background:#eee;border:solid 1px;border-color:#ccc #999 #999 #ccc;height:30px}.lsbb{display:block}.ftl,#fll a{display:inline-block;margin:0 12px}.lsb{background:url(/images/nav_logo229.png) 0 -261px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;outline:0;

Где-то в строке мы можем найти:

>12,34 M<

Можно ли извлечь число 12,34и поместите его в переменную?

У меня есть несколько таких строк, но шаблон> число M <всегда одинаков. </p>

Спасибо за предложения :)

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Когда у вас есть шаблон в каждой строке, используйте

resultvar=$(sed -r 's/.*>([0-9]+[,]{0,1}[0-9]+ M)<.*/\1/' <<< "$variable") 

Когда вы вводите более 1 строки и только одно совпадение, используйте

resultvar=$(sed -nr 's/.*>([0-9]+[,]{0,1}[0-9]+ M)<.*/\1/p' <<< "$variable") 

Когда вы можетеиметь более одного совпадения, укажите желаемый результат (только первое или последнее совпадение, массив, набор переменных или сообщение об ошибке).

0 голосов
/ 03 июня 2018

вы можете попробовать прочитать вашу входную переменную, чтобы использовать grep Regex

echo $variable | grep -Eo "[0-9,]{1,} M"   

См. Комментарии: используйте <<<, избегая echo и присваивая переменной:

finalVar=$(grep -Eo '[0-9,]{1,} M' <<< "$variable") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...