У меня есть файл (скажем, file.txt), содержащий данные, как показано ниже
^A15=0^A18=20170924065847986457^A21=0^A22=2
Как я могу использовать grep для получения значения тега 18?
По запросу (GNU) grep:
echo "^A15=0^A18=20170924065847986457^A21=0^A22=2" | grep -oP "A18=\K\d+"
вывод:
20170924065847986457
\ K - это короткая и эффективная форма (? <= Pattern), которую вы используете как предварительное утверждение нулевой ширины перед текстом, который вы хотите вывести. </p>
Это не подходит для grep, который предназначен для фильтрации, а не для извлечения.
grep
Вы можете использовать perl вместо:
perl
perl -pe 's/.*\^A18=([^^]+).*/$1/' <<< '^A15=0^A18=20170924065847986457^A21=0^A22=2'
Это выводит: 20170924065847986457