마운트 지점의 마지막 슬래시를 바꾸는 스크립트

마운트 지점의 마지막 슬래시를 바꾸는 스크립트

마지막을 제거하는 스크립트를 작성하려고 합니다."/"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)!!'

설명: /앞에 공백이 아닌 문자가 있고 뒤에 공백 문자가 오는 모든 콘텐츠를 삭제합니다.

관련 정보