마지막을 제거하는 스크립트를 작성하려고 합니다."/"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)!!'
설명: /
앞에 공백이 아닌 문자가 있고 뒤에 공백 문자가 오는 모든 콘텐츠를 삭제합니다.