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.
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
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.
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
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
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
Tags text-processing fstab awk sed replace