最後を削除するスクリプトを作成しようとしています。"/"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)!!'
説明:/
前に空白以外の文字が続き、後に空白文字が続くすべてのコンテンツを削除します。