fstab 파일의 줄을 일치시키는 방법

fstab 파일의 줄을 일치시키는 방법

/etc/fstab파일에 다음 줄이 있습니다

/dev/mapper/vg_D /data/container xfs     defaults        0 0

하지만 행을 다음과 같이 일치시키려고 하면

LINE=/data/container

grep -qxF "$LINE" /etc/fstab || echo "line not in file !!!"
line not in line !!!

grep -qxF라인이 안맞는 거같아 /data/container

우리가 어디에서 잘못됐나요? 그리고 라인을 일치시키는 방법은 무엇입니까?

답변1

이 매개변수를 사용하지 마세요 -x. 전체 줄을 일치시키려고 시도합니다.

       -x, --line-regexp
              Select only those matches that exactly match the whole  line.   For  a  regular  expression
              pattern, this is like parenthesizing the pattern and then surrounding it with ^ and $.

/data/container따라서 다른 내용이 포함되지 않은 줄만 일치합니다 .

답변2

견고성을 향상하려면 grep 대신 awk를 사용해야 합니다. 현재 grep 방법이 부분적으로 수정되어 제거되었더라도 -x추가로 수정하더라도 -w여전히 잘못된 일치 항목이 생성되기 때문 입니다. grep 명령을 다음으로 바꾸십시오.

awk -v line="$LINE" '$2==line{exit 1}' /etc/fstab

아니면 awk에서 인쇄하는 것이 더 좋습니다.

awk -v line="$LINE" '
    $2==line { f=1; exit }
    END { print (f ? "line inf file" : "line not in file"); exit !f }
' /etc/fstab

"$LINE"백슬래시를 포함할 수 있는 경우 다음을 사용하십시오.

line="$LINE" awk '$2==ENVIRON["line"]...'

line예를 들어 awk 설정을 사용하는 대신 -vawk는 탭으로 변환되지 않습니다.\t

관련 정보