다음 예에서는 fstab에서 UUID 번호를 일치시킬 때 줄 시작 부분에 문자열을 추가하는 방법을 보여줍니다.
sed -e "/UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/ s/^/###FAULTY_DISK###/" -i /etc/fstab
우리는 확인할 수 있습니다
more /etc/fstab
###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0
하지만 두 번째 실행에서 우리는
sed -e "/UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/ s/^/###FAULTY_DISK###/" -i /etc/fstab
more /etc/fstab
###FAULTY_DISK######FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0
###FAULTY_DISK###
fstab 파일에 이미 설정된 경우 추가를 무시하도록 sed에 지시하는 방법
답변1
해당 UUID로 시작하는 경우에만 추가합니다.
sed -e 's/^UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/###FAULTY_DISK###&/' /etc/fstab
또는 선행 공백도 무시하려는 경우(있는 경우):
sed -e 's/^[[:blank:]]*UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/###FAULTY_DISK###&/' /etc/fstab
답변2
또 다른 방법은 로 줄을 건너뛰는 것입니다 ###FAULTY_DISK###
. 한 줄에는 잘못된 디스크 설명이 포함되어 있고 다른 줄에는 그렇지 않은 다음 예제 파일을 생각해 보세요.
$ cat fstab
UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0
###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0
n
in 명령을 사용하여 sed
다음 줄로 이동할 수 있습니다. 따라서 sed
이 줄이 오류 메시지와 일치하면 다음 줄로 이동하라는 메시지가 표시됩니다.
$ sed "/###FAULTY_DISK###/n; s/UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/###FAULTY_DISK###&/" fstab
###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0
###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0
보시다시피 메시지는 메시지가 없는 행에만 추가됩니다.
답변3
내가 올바르게 이해했다면:
반면
##FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a
UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a
그 다음에
$ sed '/^###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/!s/^UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/###FAULTY_DISK###&/' /etc/fstab
###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a
###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a
답변4
사용행복하다(이전 Perl_6)
raku -pe 's/ ^ ("UUID=86d58af9-801b-4c25-b59d-80b52b4acc61") /\#\#\#FAULTY_DISK\#\#\#$0/;' fstab_test.txt
또는
raku -pe 's[ ^ ("UUID=86d58af9-801b-4c25-b59d-80b52b4acc61") ] = "\#\#\#FAULTY_DISK\#\#\#$0";'
위의 답변은 Perl 프로그래밍 언어 제품군에 속하는 Raku로 작성되었습니다. 일단 앞에 추가되면 동일한 Raku 단일 라인의 후속 실행 중에 ###FAULTY_DISK###
파일의 한 라인이 fstab
무시됩니다. 즉, 수정이 안정적입니다.
샘플 입력 및 샘플 출력은 아래 링크를 참조하세요.