Script para substituir a última barra no ponto de montagem

1

Estou tentando fazer um script para excluir o último "/" no ponto de montagem dentro do fstab.

Eu criei este script de shell, mas não estou feliz com o resultado. Gostaria de saber se alguém sabe como substituir pelo awk?

Eu quero ir a partir disso:

/dev/mapper/vgurano-lvfix /urano/fix/     ext4    defaults        0 0

Para isso:

/dev/mapper/vgurano-lvfix /urano/fix     ext4    defaults        0 0

Eu tenho esse problema em vários servidores, com vários sistemas de arquivos, e o sistema de monitoramento que usamos, não é amigável com o último /.

Meu script é este:

fsmp="/urano/fix/AIX_MLs"
lastc='grep -i $fsmp /etc/fstab | awk '{print $2}' | sed -e "s/^.*\(.\)$//"'
filesystem='grep -i $fsmp /etc/fstab | awk '{print $2}''
1part='grep -i $fsmp /etc/fstab | awk '{print $1}''
rest='grep -i $fsmp /etc/fstab | awk '{print $3" "$4" "$5" "$6}''
if [ "$lastc" = "/" ]
then
  woslash='echo $filesystem | awk -F/ '{OFS="/";NF--;print $0;}''
  echo "$1part $woslash $rest"
fi
    
por krivos 18.10.2017 / 14:54

4 respostas

2

Um caminho:

$ x="/dev/mapper/vgurano-lvfix /urano/fix/ ext4 defaults 0 0"
$ echo "$x" | awk '{gsub(/\/$/,"",$2);}1'
/dev/mapper/vgurano-lvfix /urano/fix ext4 defaults 0 0
$

Usando o gsub, substituindo a barra no final, se presente.

    
por 18.10.2017 / 14:59
1

Para remover a última barra do campo <dir> no arquivo /etc/fstab (observe que pode haver raiz do diretório / apresentado por uma única barra):

Digamos que temos esse conteúdo /etc/fstab :

/dev/mapper/vgurano-lvfix      /urano/fix/      ext4      defaults      0      0
/dev/sda1       /      ext4      defaults,noatime      0      1

Com o awk :

awk '$2~/.\/$/{ sub(/\/$/,"",$2) }1' /etc/fstab

A saída:

/dev/mapper/vgurano-lvfix /urano/fix ext4 defaults 0 0
/dev/sda1              /             ext4      defaults,noatime      0      1
    
por 18.10.2017 / 15:11
1

Uma alternativa é:

awk '{ if ( substr($2,length($2)) == "/" ) $2=substr($2,1,length($2)-1) }1' <<< "/dev/mapper/vgurano-lvfix /urano/fix ext4 defaults 0 0"

Resultado:

/dev/mapper/vgurano-lvfix /urano/fix ext4 defaults 0 0
    
por 18.10.2017 / 15:02
0

No contexto específico do fstab, tente:

perl -pe 's!(?<=\S)/(?=\s)!!'

Explicação: remova qualquer / precedido por um caractere não-espacial e seguido por um carro espacial

    
por 18.10.2017 / 15:46