`sed -i.bak '/^x /d' "$SOME_FILE"`에 대한 내 해석이 맞나요?

`sed -i.bak '/^x /d' "$SOME_FILE"`에 대한 내 해석이 맞나요?

항상 겁이 나는 이유 때문에 sed구문이 조금 이상한 것 같습니다. 다음 내용이 무엇인지 확실히 이해하고 싶습니다.

sed -i.bak '/^x /d' "$SOME_FILE"
  1. $SOME_FILE그러면 먼저 ${SOME_FILE}.bak( )의 백업이 만들어집니다 -i.bak.
  2. $SOME_FILE정규식 ""과 일치하는 모든 줄 ^x(즉, x' '로 시작하고 뒤에 공백이 오는 줄)이 삭제됩니다.

답변1

예, 귀하의 이해가 정확합니다. 귀하의 형식으로 판단하면 귀하가 GNU를 사용하고 있다고 가정합니다(다른 구현에서는 sed및 사이에 공백이 필요할 수 있으며 일부는 전혀 지원하지 않을 수 있습니다). 작동 방식은 다음과 같습니다.-i.bak-i-iinfo sed

-i[SUFFIX]
--in-place[=SUFFIX]
     This option specifies that files are to be edited in-place.  GNU
     `sed' does this by creating a temporary file and sending output to
     this file rather than to the standard output.(1).

 This option implies `-s'.

 When the end of the file is reached, the temporary file is renamed
 to the output file's original name.  The extension, if supplied,
 is used to modify the name of the old file before renaming the
 temporary file, thereby making a backup copy(2)).

 This rule is followed: if the extension doesn't contain a `*',
 then it is appended to the end of the current filename as a
 suffix; if the extension does contain one or more `*' characters,
 then _each_ asterisk is replaced with the current filename.  This
 allows you to add a prefix to the backup file, instead of (or in
 addition to) a suffix, or even to place backup copies of the
 original files into another directory (provided the directory
 already exists).

 If no extension is supplied, the original file is overwritten
 without making a backup.

d명령은 이전 표현식이 성공한 모든 행을 삭제합니다.엄밀히 말하자면, "패턴 공간"을 제거하지만 간단한 sed스크립트에서는 해당 줄입니다.

답변2

'/^x /d'여기에는 실제 공간이 필요하지 않습니다. 더 좋은 점은 공백으로 시작하여 숫자로 시작하는 '/^x\s\d'문자열의 시작을 나타낸다는 것입니다 .x

관련 정보