Не могли бы вы попробовать следующие, написанные и протестированные с показанными образцами в GNU sed
.
sed -n '2s/\([^:]*\):\([^:]*\).*/\2/p' Input_file
Пояснение: Использование опции -n
sed
остановит печать для всех строк, и печать будет происходить только для тех строк, где мы явно упоминаем опцию p
для печати (позже в коде). Тогда упоминание 2s
означает выполнение замены только во второй строке. Затем с помощью регулярного выражения и возможности sed
сохранять согласованное регулярное выражение во временном буфере, с помощью которого значения могут быть извлечены позже путем нумерации 1,2...and so on
. Регулярное выражение в основном захватывает 1-ю часть, которая идет до первого появления :
, а затем 2-ю часть после первого появления :
до 2-го появления :
в соответствии с запросом OP. Таким образом, при выполнении замены упоминание /2
заменит всю строку вторым значением, хранящимся в буфере, в соответствии с запросом, затем упоминание p
напечатает эту часть только во второй строке.