マウントポイントの最後のスラッシュを置き換えるスクリプト

マウントポイントの最後のスラッシュを置き換えるスクリプト

最後を削除するスクリプトを作成しようとしています。"/"fstab内のマウントポイントにあります。

このシェルスクリプトを作成しましたが、結果は満足できません。 awkで置き換える方法を知っている人はいますか?

ここから始めたいです。

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

これに関して:

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

複数のファイルシステムを持ついくつかのサーバーでこの問題が発生します。

私のスクリプトは次のとおりです

fsmp="/urano/fix/AIX_MLs"
lastc=`grep -i $fsmp /etc/fstab | awk '{print $2}' | sed -e "s/^.*\(.\)$/\1/"`
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

答え1

一方通行:

$ 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
$

gsubを使用して末尾のスラッシュ(存在する場合)を置き換えます。

答え2

<dir>ファイルフィールドから最後のスラッシュを削除するには(単一のスラッシュとして表示されるルートディレクトリが/etc/fstabある場合があります):/

次のようなものがあるとしましょう/etc/fstab

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

そしてアッ:

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

出力:

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

答え3

別のオプションは次のとおりです。

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

結果:

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

答え4

fstab の特定のコンテキストで以下を試してください。

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

説明:/前に空白以外の文字が続き、後に空白文字が続くすべてのコンテンツを削除します。

関連情報