Remova o primeiro e último caractere se presente

1

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 Choses Curieuses 09.01.2016 / 04:09

3 respostas

1

Tente isto:

sed 's/\^\.//;s|/$||' file

Saída:

/inst/oracle
/tmp
/inst/maj
/mkcd
/var/adm/ras/livedump
    
por 09.01.2016 / 04:33
0

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
    
por 09.01.2016 / 20:40
0

Isso deve funcionar:

sed 's|\^\.\(.*[^\/]\)\/*$||g' file

Saída:

/inst/oracle  
/tmp  
/inst/maj  
/mkcd   
/var/adm/ras/livedump
    
por 10.05.2018 / 18:47

Tags