Tente isto:
sed 's/\^\.//;s|/$||' file
Saída:
/inst/oracle /tmp /inst/maj /mkcd /var/adm/ras/livedump
Eu preciso remover os dois primeiros caracteres de cada linha em um arquivo (sempre o mesmo) e o último "/" se estiver presente.
A entrada é, no arquivo F1:
^./inst/oracle/
^./tmp/
^./inst/maj/
^./mkcd
^./var/adm/ras/livedump/
Usando:
cat F1 | sed 's#^\^\.\(.*\)/$##'
Eu obtenho o seguinte resultado:
/inst/oracle
/tmp
/inst/maj
^./mkcd
^./var/adm/ras/livedump/
O mesmo resultado com um "g" no final do sed
As últimas linhas são ignoradas. Eu não consigo descobrir por que ele está fazendo o trabalho pelas 3 primeiras linhas e depois parando.
Por uma questão de variedade, aqui está a solução com um script de várias linhas em vez de sed
:
while IFS='' read -r line
do
line="${line%/}"
echo "${line#??}"
done
Isso deve funcionar:
sed 's|\^\.\(.*[^\/]\)\/*$||g' file
Saída:
/inst/oracle
/tmp
/inst/maj
/mkcd
/var/adm/ras/livedump