설명하다:

설명하다:

문자열 일치 인스턴스를 찾거나 바꾸는 스크립트를 만들려고 합니다.

vc/integer

/etc/securetty 파일에는 다음 문자열이 포함되어 있습니다.

vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11



grep -E 'vc/(\d{0,4}\D)*' /etc/securetty | while read line; do sed -ie "s=$line==g" /etc/securetty; done

예상대로 위 명령은 언급된 모든 문자열을 제거했지만 마지막 두 문자열 vc/1의 일부인 두 번째 숫자 0과 1은 제거하지 않았습니다.0VC/11. 다음 내용이 포함된 파일이 남았습니다.

0
1

한 자리 및 두 자리 일치 항목을 제거하도록 명령을 수정하려면 어떻게 해야 합니까?

답변1

그냥 이렇게 해보는 게 어때?

sed -i -e 's|vc/[0-9]\{1,\}||g' /etc/security

설명하다:

= regex [0-9]\{1,\}> 1개 이상의 이전 원자와 일치합니다. 귀하의 경우에는 정확히 입니다 [0-9]. \d+내가 제공한 것과 동일하지만 POSIX [0-9]\{1,\}sed와 호환되지 않습니다. 다시 [0-9]\{0,\} 한 번 말하지만 \d*.

관련 정보