У меня есть оператор формы atPhysAddress[1][1.10.0.0.98]
я хотел бы удалить все детали за исключением первой во второй скобке, или какой бы ни оценивают падения там, как я могу достигнуть этого? (т.е. я хотел бы только не учесть первое целое число во второй скобке),
Вы могли сделать что-то как
sed -r 's/\[([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\]/[XX.\2.XX.XX.XX]/'
который соответствует [
сопровождаемый последовательностью 5 разделенных от точки целых чисел, сопровождаемых ]
и затем повторно заменяет 2-м (с XX маркировками удаленных - дополнительный, конечно). Использование -r
опция делает выражение легче читать, но Вы могли переписать его в POSIX sed, если GNU sed не доступен. Путем изменения \2 к \1, \3, \4 и т.д. можно выбрать который число повторно занять место.
echo "atPhysAddress[1][1.10.0.0.98]" | sed -r 's/\[([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\]/[XX.\2.XX.XX.XX]/'
atPhysAddress[1][XX.10.XX.XX.XX]
Например, с
$ echo "atPhysAddress[1][1.10.0.0.98]" | sed 's/\(\[.*\]\)\[\(.\).*\]/\1[\2]/'
atPhysAddress[1][1]
Только получить первое число во второй скобке:
$ echo "atPhysAddress[1][12.10.0.0.98]" | sed 's/.*\]\[\([^.]*\).*\]/\1/'
12