Por exemplo, com
$ echo "atPhysAddress[1][1.10.0.0.98]" | sed 's/\(\[.*\]\)\[\(.\).*\]/[]/'
atPhysAddress[1][1]
Para obter apenas o primeiro número no segundo colchete:
$ echo "atPhysAddress[1][12.10.0.0.98]" | sed 's/.*\]\[\([^.]*\).*\]//'
12
Eu tenho uma declaração do formulário atPhysAddress[1][1.10.0.0.98] i gostaria de remover todos os detalhes, exceto o primeiro no segundo colchete, ou o valor que cai lá, como posso conseguir isso? (ou seja, eu gostaria de apenas deixar o primeiro inteiro no segundo colchete)
Por exemplo, com
$ echo "atPhysAddress[1][1.10.0.0.98]" | sed 's/\(\[.*\]\)\[\(.\).*\]/[]/'
atPhysAddress[1][1]
Para obter apenas o primeiro número no segundo colchete:
$ echo "atPhysAddress[1][12.10.0.0.98]" | sed 's/.*\]\[\([^.]*\).*\]//'
12
Você poderia fazer algo como
sed -r 's/\[([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\]/[XX..XX.XX.XX]/'
que corresponde a [ seguido por uma sequência de 5 inteiros separados por pontos seguidos por ] e, em seguida, retorna novamente o segundo (com XX marcando os removidos - opcional, é claro). O uso da opção -r torna a expressão mais fácil de ler, mas você pode reescrevê-la no POSIX sed se o GNU sed não estiver disponível. Ao alterar \ 2 para \ 1, \ 3, \ 4 etc., você pode escolher o número a ser substituído novamente.
echo "atPhysAddress[1][1.10.0.0.98]" | sed -r 's/\[([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)\]/[XX..XX.XX.XX]/'
atPhysAddress[1][XX.10.XX.XX.XX]